我有一个资源控制器Items
:
Route::resource('items', 'ItemsController');
在动作ItemsController@store
中创建新项目我需要在使用表单操作之前激活CSRF filter
(可能还有Auth filter
)。但我不能写
$this->beforeFilter('csrf')
它不起作用。当我将此调用放在父控制器的__construct()
中时,它可以工作。
我需要做些什么才能直接为资源控制器操作调用一些过滤器?
答案 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']);