2012-04-18 108 views
0

所以我一直在尽我所能去尽可能地吸收Zend框架,这对我来说很新,从我第一次尝试并做得很好以来,我大约两周至今。Zend框架控制器到模块路由

但是我遇到了一个小问题,我无法弄清楚。

因此,这里的交易,我有一个标准的Zend框架项目与其中的一些模块。就像这样:

- Project 
- - Application 
- - - configs 
- - - controllers 
- - - - IndexController 
- - - - WMSController 
- - - forms 
- - - layouts 
- - - models 
- - - modules 
- - - - content 
- - - - - controllers 
- - - - - - IndexController 
- - - - - models 
- - - - - views 
- - - - - Bootstrap 
- - - views 
- - - bootstrap 
- - public 

etc.. 

现在我在为WMSController至极的视图设置一个简单的测试环节应该有人直接就klicking的内容模块的IndexController。现在

<a href="wms/content"> test link to content module</a> 

,你很可能会看到这个链接是行不通的,因为它是对本地主机/ WMS /内容这将是在WMSController内容动作不此时存在指向。

现在我想要做的是让WM /内容实际上指向内容模块的IndexController。为什么?那么我只是不希望用户输入localhost/content来访问WMS的一部分内容模块。我想迫使他们先通过WMS控制器。

我已经阅读了许多有关使用引导程序或自动加载器进行路由选择的解决方案,但几乎所有这些都只是帮助您将特定的URL指向特定控制器中的特定操作。

我想要的是指向特定模块中特定控制器中的特定操作的url。

注意:所有其他控制器和视图仍然是默认生成的版本,但不会对它们进行任何更改!

如果任何人都可以告诉我一个这样做的代码示例,将不胜感激!

+0

使用[Router](http://framework.zend.com/manual/en/zend.controller.router.html)? – prodigitalson 2012-04-18 13:25:20

+0

类似的问题。 http://stackoverflow.com/questions/9372055/cannot-load-modules-index-action-for-zend-framework-module/9436169#9436169经过答案,我猜它是apache的mod_rewrite模块。 – Weltschmerz 2012-04-18 14:44:23

回答

1

如果我理解正确的话,你只是想/wms/content指向模块内容控制器指数行动指数。这是一个简单的路由器会工作(至少直到你想获得更复杂)

在你的application.ini添加这些线路的情况下:

resources.router.routes.content.route = "wms/content" 
resources.router.routes.content.defaults.module = "content" 
resources.router.routes.content.defaults.controller = "index" 
resources.router.routes.content.defaults.action = "index" 

这是建立一个最简单的方法自定义路线。
* 注意: *左边的第四个参数是路由的名称,所以如果您使用允许使用路由名称的方法(例如url()helper),则可以使用路由名称。

这是你将如何使用命名的路线,我个人可能会考虑重新命名我的模块WMS(如果可能的话和实际),并从默认的指数控制器在重定向那里。因为一旦你开始使用命名和自定义路线,很难退出...

0

从你的问题,你

想迫使他们得到线槽WMS控制器首先

你可以做一两件事。无论你想在WMSController中做什么,只要用户输入localhost/content/**,你都可以将它放在父类中,用于模块中的所有控制器:'内容'。这样,您就可以检查东西/执行操作,每次请求谈到这个控制器(不管用户想转到其他模块。)

类Content_AnyController扩展MyControllers_Controller_Action_Admin { .... }

其中

class Reviewmo_Controller_Action extends Zend_Controller_Action{ 
    public function init(){ 
    //Things you want to do each time 
    } 

} 

这就是我想你想,如果你想只是简单的重定向到WMSController的ContentAction你可以简单地重定向到控制器来实现,因为。