Laravel 4 前过滤器的第二个参数传递到哪里?



我在文档中找到了这个例子:

class UserController extends BaseController {
        /**
         * Instantiate a new UserController instance.
         */
        public function __construct()
        {
        $this->beforeFilter('auth', array('except' => 'getLogin'));
        $this->beforeFilter('csrf', array('on' => 'post'));
        $this->afterFilter('log', array('only' =>
                        array('fooAction', 'barAction')));
        }
    }

我很困惑,因为我检查了filters.php,然后发现,身份验证过滤器没有任何标识符:

    Route::filter('auth', function()
{
   if (Auth::guest()) return Redirect::guest('login');
});

我想知道beforefilter的第二个参数传递到哪里?有人能帮忙吗?谢谢

你看错地方了。该array参数没有被传递到auth过滤器。它是Controller.beforeFilter()的一个参数。

正如您在Laravel的文档中所看到的,beforeFilter()需要两个参数:

  1. $filter在控制器操作之前执行的过滤器。这些过滤器就是您在filters.php文件中看到的过滤器
  2. $options一个数组,其中包含要传递的筛选器的选项。在这种情况下,您将传递值为getLoginexcept选项

/**
* Register a new "before" filter on the controller.
*
* @param  string  $filter
* @param  array   $options
* @return void
*/
public function beforeFilter($filter, array $options = array())
{
    $options = $this->prepareFilter($filter, $options);
    $this->filters[] = new Before($options);
}

最新更新