Search code examples
zend-frameworkzend-controllerzend-controller-router

Zend_Controller_Action _forward use (or abuse) cases


While developing a web app using ZF, I had an haha! moment regarding the _forward method in Zend_Controller_Action. As stated in the Programmer's Reference Guide, when calling the _forward method inside an action, the requested action will not be executed until the current action completes. This begs the question:

When would you use the _forward action to intentionally make sure your current action completes before starting another, aside from form processing (although you would probably place the _forward request at the end of the action anyway)? What are some clear cut examples of this? Any pitfalls or advantages to using this approach as apposed to an ActionStack?


Solution

  • _forward() just replaces module/controller/action parameters in Request object.

    It just allows to change your mind on the go (without another request).

    This has different consequences, depending on which dispatch loop state it is called. Some time setDispatched() is needed to execute.

    Consider those scenarios:

    First:

    $this->_forward('some')
    

    Second:

    return $this->_forward('some');
    

    Third:

    $this->someAction();
    // ececuted?
    

    Fourth:

    return $this->someAction();
    // executed?