2013-03-12 4 views
1

Если после проверки произошли какие-либо ошибки, я перешлю обратно на контроллер ввода, а если нет ошибки, продолжите успешный контроллер.ZF2 - прекратить выполнение после переадресации

В ZF1, я был в состоянии сделать это, потому что fowarding в 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')); 
    } 
} 

Любые решения для этого? Я просто хочу прекратить выполнение после форварда ...

Я знаю, что возвращаю ViewModel в successAction останавливается больше, но я хочу сделать его общедоступным.

ответ

3

Я предполагаю, что вы ищете

$e->stopPropagation(); 

Это останавливает дальнейшее распространение события.

+0

Супер! Большое спасибо. – htnux

Смежные вопросы