是否可以在Zend框架中路由我的简单URL(不指定模块,控制器和操作)?

时间:2010-10-29 09:15:01

标签: zend-framework router

我正在为我的项目使用zend框架,我需要将路径路由到我想要的地方。例如: 我有一条路径www.example.com/module/controller/action1,我想在内部路由到www.example.com/module/controller/action2。

但主要问题是我不想使用我必须指定模块,控制器和动作的函数[$ this-> _forward('action2','controller','module');] ,我只想这样:$ this-> _forward('module / controller / action2');.

如果有人有解决方案,请建议我。它迫切需要我的项目。

谢谢, 激凸

1 个答案:

答案 0 :(得分:0)

控制器方法_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]);
}

希望有所帮助!