如何在Laravel中对指定的控制器操作进行过滤

时间:2013-09-01 02:38:36

标签: php laravel

我有CartController路由过滤器似乎只能在控制器上绑定或获取,我可以对"动作"?

进行身份验证过滤

例如:

<?php

CartController extends BaseController {

    public function getIndex() {
        // not need filter
    }

    public function getList()
    {
        // not need filter
    }

    public function getCheck()
    {
        // need to filter
    }

}

4 个答案:

答案 0 :(得分:11)

您可以在Class构造函数中设置BaseController beforeFilter()Action,并将您想要过滤的Actions作为“only”键控数组作为第二个Argument传递。

$this->beforeFilter('filtername', 
                    array('only' => array('fooAction', 'barAction')));

使用您的示例代码:

<?php

CartController extends BaseController {

    public function __construct() {

        $this->beforeFilter('filtername', array('only' =>
                            array('getCheck')));
    }

    public function getIndex() {
        // not need filter
    }

    public function getList()
    {
        // not need filter
    }

    public function getCheck()
    {
        // need to filter
    }

}

来源:Laravel Docs: Controller Filter

答案 1 :(得分:0)

似乎你想在同一个控制器中将RESTful和普通方法(get / post vs action)混合在一起,至少在Laravel 3中这是无法完成的。

对于过滤,您可以查看controller filters,您可以在其中为特定方法指定身份验证过滤器,或者采用其他方式从过滤器中排除某些方法。

答案 2 :(得分:0)

您可以按照所需的方法调用过滤器。

请参阅文档here,了解代码中的内容。

 $this->beforeFilter('my-filter-name');

答案 3 :(得分:0)

我遇到了与资源控制器类似的问题,并且能够做到这一点:

$this->beforeFilter('admin', [ 'except' => ['index','show'] ]);