Как вызвать фильтр для необходимых действий контроллера ресурсов?
У меня есть контроллер ресурсов Items
:
Route::resource('items', 'ItemsController');
И в действии [email protected]
для создания нового элемента мне нужно активировать CSRF filter
(и, возможно, Auth filter
) перед действиями с формой. Но я не могу написать
$this->beforeFilter('csrf')
он не работает. Он работает, когда я помещаю это вызов в родительский контроллер __construct()
.
Что мне нужно сделать, чтобы вызвать некоторые фильтры непосредственно для действий контроллера ресурсов?
Ответы
Ответ 1
Вы должны иметь возможность использовать фильтры для определенных действий, только установив их в __construct()
следующим образом:
class ItemsController extends BaseController
{
public function __construct()
{
$this->beforeFilter('csrf', array('on' => 'store') );
}
//rest of controller...
}
Примечание. Вы также можете использовать ключевые слова "только" и "за исключением" и передать массив имен действий для применения (или отрицания) фильтра для более чем одного действия.
Ответ 2
Обычно вы можете использовать конструктор Route::resource()
. Используйте этот код:
Route::resource('items', 'ItemsController', ['before' => 'csrf']);