ZF2 - 在前进后停止执行

时间:2013-03-12 11:04:12

标签: php zend-framework2

如果验证后有任何错误,我会转发回输入控制器,如果没有错误,继续成功控制器。

在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会停止再读取,但我想让它通常可用。

1 个答案:

答案 0 :(得分:3)

我猜你正在寻找

$e->stopPropagation();

这会阻止进一步的事件传播。