Laravel 4,如何在Route :: controller()上应用过滤器

时间:2014-02-05 17:14:47

标签: php laravel laravel-4

我知道我可以做到这一点

Route::get('foo/bar', array('before' => 'filter', 'uses' => 'Controller@bar'));

应用路由一些过滤器。我也知道Route :: group()方法。无论如何,如果我想以这种方式定义一个控制器

Route::controller('foo/{id}/bar', 'Controller');

我无法传递数组作为第二个参数。

问题:如何将过滤器应用于以下路线?

Route::controller('foo/{id}/bar', 'Controller');

===编辑

我想在我的route.php中编码,而不是在控制器构造函数内。

2 个答案:

答案 0 :(得分:13)

在控制器的constructor中,您可以使用

public function __construct()
{
    $this->beforeFilter('auth');
}

此外,您可以使用

Route::group(array('before' => 'auth'), function() {
    Route::controller(...);
});

答案 1 :(得分:1)

  

Blockquote控制器方法接受两个参数。第一个是控制器处理的基URI,而第二个是控制器的类名。接下来,只需向控制器添加方法,并以他们响应的HTTP谓词作为前缀。

Route :: controller负责使用REST命名约定创建一组路由。被认为是创建RESTFull服务。

  

Blockquote过滤器可以在类似于“常规”路线的控制器路线上指定:

因为此函数只允许两个参数,所以可以在构造函数中应用控制器过滤器。例如:

class RoutedController extends Controller
{
    public function __construct()
    {
       //Apply Auth filter to all controller methods
       $this->filter('before', 'auth');
    }
}

您可以在Laravel文档中了解控制器过滤器:http://laravel.com/docs/controllers#controller-filters