【问题标题】:ZF2 - stop executing after forwardZF2 - 前进后停止执行
【发布时间】:2013-03-12 19:56:51
【问题描述】:

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

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

【问题讨论】:

    标签: php zend-framework2


    【解决方案1】:

    我猜你在找

    $e->stopPropagation();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多