例如,我在我的BaseController中有这个:
public function __construct($module = 'basic')
{
$this->beforeFilter('cf.access:' . $module.',create', array('on' => 'post'));
$this->beforeFilter('cf.access:' . $module.',read', array('on' => 'get'));
$this->beforeFilter('cf.access:' . $module.',update', array('on' => 'put'));
$this->beforeFilter('cf.access:' . $module.',delete', array('on' => 'delete'));
}
如果现在,我想在POST上放置另一个过滤器,它们的执行顺序是什么?
答案 0 :(得分:2)
我没有找到执行订单的任何文档,但根据我自己的经验,它们是自上而下的,所以万一他们不能设法接受过滤器,他们会停止执行,并且#39; s。所以如果你继续添加过滤器:
public function __construct($module = 'basic')
{
$this->beforeFilter('cf.access:' . $module.',create', array('on' => 'post'));
$this->beforeFilter('cf.access:' . $module.',read', array('on' => 'get'));
$this->beforeFilter('cf.access:' . $module.',update', array('on' => 'put'));
$this->beforeFilter('cf.access:' . $module.',delete', array('on' => 'delete'));
$this->beforeFilter('is_db_writable', array('on' => 'post')); //new entry
}
系统会检查:
cf.access:{$module}create
吗?Is_db_writable
此刻?从我的头脑中,你能做的最好的事情就是检查实际工作的内容。定义您自己的过滤器并手动返回false
和true
,并记录每次执行。
public function __construct($module = 'basic')
{
$this->beforeFilter('always_return_true', array('on' => 'post'));
$this->beforeFilter('always_return_false', array('on' => 'post'));
}
是否显示第二个过滤器的日志?然后订单是自上而下的。