如果验证后有任何错误,我会转发回输入控制器,如果没有错误,继续成功控制器。
在ZF1中,我能够这样做,因为preDispatch()中的fowarding不执行如下所示的调用操作:
public function preDispatch()
{
parent::preDispatch();
if ($action == 'success' && $this->validate() === false) {
$this->_forward('input');
}
}
public function successAction()
{
}
public function inputAction()
{
}
在ZF2中,我试图在调度和转发时附加验证,如果有任何错误,但ZF2继续执行,因此调用inputAction和successAction。
$events->attach('dispatch', function (MvcEvent $e) use ($controller) {
$result = $this->validate($controller);
if ($result->isValid() === false) {
$callingClassName = get_class($this);
$test = $controller->forward()->dispatch($callingClassName, array('action' => 'input'));
}
}
任何解决方案? 我只是想在前进后停止执行...
我知道在successAction中返回的ViewModel会停止再读取,但我想让它通常可用。
答案 0 :(得分:3)
我猜你正在寻找
$e->stopPropagation();
这会阻止进一步的事件传播。