我正在为我的项目使用zend框架,我需要将路径路由到我想要的地方。例如: 我有一条路径www.example.com/module/controller/action1,我想在内部路由到www.example.com/module/controller/action2。
但主要问题是我不想使用我必须指定模块,控制器和动作的函数[$ this-> _forward('action2','controller','module');] ,我只想这样:$ this-> _forward('module / controller / action2');.
如果有人有解决方案,请建议我。它迫切需要我的项目。
谢谢, 激凸
答案 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]);
}
希望有所帮助!