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


我有一个资源控制器 Items

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

在行动中 ItemsController@store 用于创建新项目我需要激活 CSRF filter (有可能 Auth filter)在采取行动之前。但我不能写

$this->beforeFilter('csrf')

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

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


6806
2017-08-06 09:24


起源



答案:


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

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

    //rest of controller... 
}

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


12
2017-08-06 10:25



only 选项帮助我。谢谢! - mikatakana
对于有兴趣的人: laravel.com/docs/controllers#controller-filters 解释了在控制器中添加过滤器的用法。 - Sean


答案:


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

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

    //rest of controller... 
}

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


12
2017-08-06 10:25



only 选项帮助我。谢谢! - mikatakana
对于有兴趣的人: laravel.com/docs/controllers#controller-filters 解释了在控制器中添加过滤器的用法。 - Sean


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

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

0
2018-02-17 02:15