Метод контроллера _forward()
может принимать только действие, если оно находится в том же контроллере и модуле, что и первое действие, которое вы пересылаете.
Итак, в вашем методе action1Action()
вы можете просто вызвать:
$this->_forward('action2');
Если ваше второе действие не в том же модуле / контроллере, вы можете создать подклассZend_Controller_Action в ваш собственный "базовый" контроллер приложений, от которого наследуются все остальные ваши контроллеры действий (хорошая практика для проектов ZF, который я найду), а затем создайте еще один с именем _forwardFromUrl()
или что-то в этом роде, который разбивает ваш URL на части и передает его_forward()
(или создайте помощника контроллера действий, если вам просто нужна эта дополнительная вещь).
Этот пример упрощен и предполагает, что ваш $url
всегда будет в формате module/controller/action
:
protected function _forwardFromUrl($url)
{
$parts = array_reverse(explode("/",$url));
$this->_forward($parts[0],$parts[1],$parts[2]);
}
Надеюсь, это поможет!