我有CartController路由过滤器似乎只能绑定到控制器或get上,我可以在"action"上做身份验证过滤器吗?
例如:
<?php
CartController extends BaseController {
public function getIndex() {
// not need filter
}
public function getList()
{
// not need filter
}
public function getCheck()
{
// need to filter
}
}
您可以在类构造函数中设置BaseController beforeFilter()Action,并将要筛选的Actions作为"only"键控数组作为第二个参数传递。
$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
你似乎想在同一个控制器中混合RESTful和普通方法(get/post-vs-action),至少在Laravel 3中这是不可能的。
对于过滤,您可以查看控制器过滤器,在那里您可以为特定方法指定身份验证过滤器,或者走另一条路,从过滤器中排除某些方法。
您可以在需要的方法中调用过滤器。
请参阅此处的文档,查看代码中的内容。
$this->beforeFilter('my-filter-name');
我在资源控制器上遇到了类似的问题,能够做到这一点:
$this->beforeFilter('admin', [ 'except' => ['index','show'] ]);