我在文档中找到了这个例子:
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()
需要两个参数:
$filter
在控制器操作之前执行的过滤器。这些过滤器就是您在filters.php
文件中看到的过滤器$options
一个数组,其中包含要传递的筛选器的选项。在这种情况下,您将传递值为getLogin
的except
选项
/**
* 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);
}