Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4视图::仅在身份验证筛选后共享()_Php_Laravel 4 - Fatal编程技术网

Php Laravel 4视图::仅在身份验证筛选后共享()

Php Laravel 4视图::仅在身份验证筛选后共享(),php,laravel-4,Php,Laravel 4,我有一些需要与所有视图共享的用户数据,一个由用户拥有的“类型”列表。我已经设置了一个view::share来实现这一点,并将其放置在“auth”过滤组中的my routes.php中,如下所示: routes.php /* Authenticated group */ Route::group( array('before' => 'auth'), function() { // Bring list of user's Types into views for sidebar

我有一些需要与所有视图共享的用户数据,一个由用户拥有的“类型”列表。我已经设置了一个view::share来实现这一点,并将其放置在“auth”过滤组中的my routes.php中,如下所示:

routes.php

/* Authenticated group */
Route::group( array('before' => 'auth'), function() {

    // Bring list of user's Types into views for sidebar menu generation
    View::share( 'types', User::find( Auth::user()->id )->types );

    /* Some user routes */

});
这在用户登录时正常工作,但是当用户注销时,它会抛出
试图获取非对象属性的错误。我是否误解了路由过滤的工作原理?我猜这个
View::share
仍在处理中,即使它位于“auth”筛选路由组中


正确的方法是什么?我是否应该创建一个
Route::filter
来共享数据,然后将其应用于路由组?

这是因为
Auth::user()
在未登录时返回非对象。我们需要对此作出解释

if ( Auth::check() ){
    View::share( 'types', User::find( Auth::user()->id )->types );
} else {
    View::share( 'types', $some_other_types_here );
}

您可以只在过滤器中共享变量

假设您使用Laravel的默认身份验证过滤器(在
filters.php
中):


这就是我所想的,但我认为身份验证过滤是在做
auth::check()
?另外,将这种身份验证检查逻辑放在我的路由中是否不正确?
Route::filter('auth', function()
{
    if (Auth::guest()) {
        View::share('types', 'not_logged_in');
        return Redirect::guest('login');
    }
    else {
        View::share('types', User::find( Auth::user()->id )->types);
        // If you are not returning anything, this filter passes
    }
});