1

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

在 ZF1 中,我能够做到这一点,因为 preDispatch() 中的转发不会执行如下调用的操作:

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 不再读取,但我想让它普遍可用。

4

1 回答 1

3

我猜你正在寻找

$e->stopPropagation();

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

于 2013-03-12T11:56:51.780 回答