Laravel基控制器方法调用一个过滤器


Laravel base controller method to call a filter

A在使用Laravel 3时遇到问题,我需要使用这个Laravel版本,因为这是我公司的Laravel的同源版本。

因此,我想在base_controller中实现一个受保护的方法,以便在我的所有控制器中使用该方法。

然后我实现了下面的代码:

protected function verifyLoggedUser( $module, $action ) {
        $result = false;
        //logical to validate user permissions
        if( !$result )
            return $this->filter('before', 'profileValidate');
        else
            return $result;
}

在我的控制器中,我调用这个方法来验证记录的用户权限,然后我需要当权限为false时,基本控制器调用过滤器profileValidate,该过滤器会将用户重定向到某个路由。

我实现日志结果的方式是:

    Laravel'Routing'Filter_Collection Object ( 
[filters] => Array ( [0] => profileValidate ) [parameters] => [only] => Array ( ) 
[except] => Array ( ) [methods] => Array ( ) )

在我的过滤器内部,我有一个重定向到某个路由的重定向,但没有工作,也没有显示任何错误!

在实现之初,我试图将用户重定向到基本控制器内的某个页面,但不起作用,因为要起作用,我也需要在父控制器中返回,这是一个问题,因为必须在方法实现之初进行验证,并且返回必须在方法的末尾。

你能帮我吗?非常感谢。

您可以直接在传递参数的路由上使用过滤器进行过滤,设置一个或多个角色可以访问该部分,类似于以下内容:

Route::group(array('before' => 'verifyLoggedUser:admin,action'), function()
{
    Route::get('panel', 'someController@action');    
    Route::get('dashboard','someController@otherAction');
});

这些参数可以通过以下方式被过滤器获取:

Route::filter('filter', function($route, $request, $module, $action)
{
    $result = false;
    //logical to validate user permissions
    if( !$result )
        return $this->filter('before', 'profileValidate');
    else
        return $result;
});