我有一个资源控制器 Items
:
Route::resource('items', 'ItemsController');
在行动中 ItemsController@store
用于创建新项目我需要激活 CSRF filter
(有可能 Auth filter
)在采取行动之前。但我不能写
$this->beforeFilter('csrf')
它不起作用。当我把这个调用放在父控制器中时,它可以正常工作 __construct()
。
我需要做些什么才能直接为资源控制器操作调用一些过滤器?
您应该只能通过在中设置过滤器来使用过滤器来执行特定操作 __construct()
喜欢这个:
class ItemsController extends BaseController
{
public function __construct()
{
$this->beforeFilter('csrf', array('on' => 'store') );
}
//rest of controller...
}
注 - 您还可以使用关键字“only”和“except”,并传递一系列操作名称以应用(或否定)多个操作的过滤器。
您应该只能通过在中设置过滤器来使用过滤器来执行特定操作 __construct()
喜欢这个:
class ItemsController extends BaseController
{
public function __construct()
{
$this->beforeFilter('csrf', array('on' => 'store') );
}
//rest of controller...
}
注 - 您还可以使用关键字“only”和“except”,并传递一系列操作名称以应用(或否定)多个操作的过滤器。
你可以正常使用 Route::resource()
构造函数。使用此代码:
Route::resource('items', 'ItemsController', ['before' => 'csrf']);