如何调用Filter以获取所需的资源控制器操作?

时间:2013-08-06 09:24:40

标签: php laravel laravel-4

我有一个资源控制器Items

Route::resource('items', 'ItemsController');

在动作ItemsController@store中创建新项目我需要在使用表单操作之前激活CSRF filter(可能还有Auth filter)。但我不能写

$this->beforeFilter('csrf')

它不起作用。当我将此调用放在父控制器的__construct()中时,它可以工作。

我需要做些什么才能直接为资源控制器操作调用一些过滤器?

2 个答案:

答案 0 :(得分:12)

您应该只能通过在__construct()中设置过滤器来执行特定操作:

class ItemsController extends BaseController
{
    public function __construct()
    {
        $this->beforeFilter('csrf', array('on' => 'store') );
    }

    //rest of controller... 
}

注意 - 您还可以使用关键字“only”和“except”,并传递一系列操作名称以应用(或否定)过滤器以执行多个操作。

答案 1 :(得分:0)

您通常可以使用Route::resource()构造函数。使用此代码:

Route::resource('items', 'ItemsController', ['before' => 'csrf']);