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

mik*_*ana 11 php laravel laravel-4

我有一个资源控制器Items:

Route::resource('items', 'ItemsController');
Run Code Online (Sandbox Code Playgroud)

ItemsController@store创建新项目的行动中,我需要在使用表单进行操作之前激活CSRF filter(也许Auth filter).但我不能写

$this->beforeFilter('csrf')
Run Code Online (Sandbox Code Playgroud)

它不起作用.当我把这个调用放在父控制器中时,它可以正常工作__construct().

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

mst*_*rdy 12

您应该只能通过以下方式设置过滤器来执行特定操作__construct():

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

    //rest of controller... 
}
Run Code Online (Sandbox Code Playgroud)

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