以下是我的控制器的一些代码:
if($user->save()) {
$this->_flash->setNamespace('success')->addMessage('Record deleted');
$this->_logger->info('About to log out');
$this->_forward('logout');
$this->_logger->info('Should Not Get To this line');
} else {
由于某种原因,_forward()动作未执行。在我的日志文件中显示“不应该到达此行”这一短语,如果我在logout()方法中放入一些日志代码,它就永远不会被调用。奇异。
我正在使用ACL来保护控制器,但它没有做任何异常。显然我的用户有适当的授权,否则他们会首先在代码中达到这一点。
我的Bootstrap中没有做任何异常......
任何想法???感谢...
答案 0 :(得分:3)
来自manual
处理完当前操作后,_forward()中请求的操作将被执行
调用_forward()
不会立即停止执行当前操作。
对我来说,看起来你实际上是在重定向之后。尝试用
替换_forward()
行
return $this->_helper->redirector('logout');
答案 1 :(得分:0)
你需要在前进后返回
if($user->save()) {
$this->_flash->setNamespace('success')->addMessage('Record deleted');
$this->_logger->info('About to log out');
$this->_forward('logout');
return;
$this->_logger->info('Should Not Get To this line');
} else {