Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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_Laravel 4 - Fatal编程技术网

Php Laravel 4过滤器和视图生成器

Php Laravel 4过滤器和视图生成器,php,laravel,laravel-4,Php,Laravel,Laravel 4,我为自己创建了一个过滤器和一个视图生成器。首先,以下是代码: 我的管理员筛选器: Route::filter('admin', function() { if (Auth::check()) { $roles = Auth::user()->role; if ($roles == '5') { return Redirect::to('news/index')->with('roles',

我为自己创建了一个过滤器和一个视图生成器。首先,以下是代码:

我的管理员筛选器:

Route::filter('admin', function()
{
    if (Auth::check()) 
    {
        $roles = Auth::user()->role;

        if ($roles == '5') 
        {
            return Redirect::to('news/index')->with('roles', $roles);
        } 
    } 
    else 
    {
        return View::make('errors.401');
    }
});
和我的视图生成器(在global.php中):

所以它不起作用。我想使用我的管理员帐户访问一些页面(该帐户的角色等于5,数据库中的“角色”列)。我在路由中创建了一个组,但当我尝试访问某个页面时,它会将我重定向到我的新闻/索引页面

我如何设置它以使任何需要管理员角色的页面都可查看


如果有帮助的话,我还使用Jeffrey Way的生成器制作了一个脚手架。

我在我的应用程序中做了一些非常类似的事情,但在我自己尝试了一些错误之后,我认为验证用户和管理员身份的最佳方法是使用两个单独的过滤器。所以,以下是我所做的:

我有一个
auth
过滤器,只需将用户登录到-

Route::filter('auth', function() {
    if (Auth::guest()) return Redirect::to('login');
});
除此之外,我还有一个
auth.admin
过滤器,用于检查登录用户角色:

Route::filter('auth.admin', function() {
    if(Auth::user()->userprofile->security_level < 4) {
        return Redirect::route('projects.home');
    }
});
使用此设置,使用
auth
auth.admin
将您只希望管理员访问的页面添加到后一个路由组

现在,使用此设置,您不需要检查作曲家中的逻辑。理想情况下,您的路由(或控制器,基于您的参数)应该处理您的路由逻辑

您可以这样重写您的作曲家:

View::composer( array( 'common.menu_addition','common.base_errors' ), function( $view ) {

    // get all categories using the category model
    $categories = Category::all();
    $view->with( 'categories', $categories );

});
编写器用于传递同一组数据或为一组视图执行同一组任务

我相信这会解决你的问题;)

Route::group(array('before' => 'auth'), function() {
    Route::get('user', array('as' => 'user.home', 'uses' => 'UsersController@index'));});
}

Route::group(array('before' => 'auth|auth.admin'), function() {
    Route::get('user/create', array('as' => 'user.create', 'uses' => 'UsersController@create'));
});
View::composer( array( 'common.menu_addition','common.base_errors' ), function( $view ) {

    // get all categories using the category model
    $categories = Category::all();
    $view->with( 'categories', $categories );

});