Можно ли перенаправить мой простой URL (без указания модуля, контроллера и действия) в Zend Framework? - PullRequest
2 голосов
/ 29 октября 2010

Я использую Zend Framework для своего проекта, и у меня есть требование для маршрутизации туда, куда я хочу. Например: У меня есть путь www.example.com/module/controller/action1, и я хочу внутренне перенаправить на www.example.com/module/controller/action2.

Но главная проблема в том, что я не хочу использовать функцию, в которой мне нужно указать модуль, контроллер и действие [$ this -> _ forward ('action2', 'controller', 'module');], просто я что-то вроде этого: $ this -> _ forward ('module / controller / action2');.

Пожалуйста, предложите мне, если у кого-нибудь есть свое решение. Срочно нужен мой проект.

Спасибо, Jitu

1 Ответ

0 голосов
/ 11 января 2011

Метод контроллера _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]);
}

Надеюсь, это поможет!

...