如何在 Zend Frameowrk 中创建特定于模块的路由器


How do you create a module specific router in the Zend Frameowrk?

我的 Zend Framework 应用程序中有以下路由器.ini:

resources.router.routes.route_id.route = "/artists/:uid"
resources.router.routes.route_id.defaults.module = "admin"
resources.router.routes.route_id.defaults.controller = "showrooms"
resources.router.routes.route_id.defaults.action = "edit"

它工作并将"/artists/:uid"路由到正确的位置。

此应用程序是模块化的,上述路由适用于每个模块。

如何使路由仅应用于一个模块?

我有以下模块:

管理:admin.site.com

公司:corp.site.com

其他:other.site.com

我只希望在用户点击 Corp 模块时应用上述路由。

提前感谢!

你想要的是将子域路由到corp

模块

为此,您必须告诉 Zend 路由使用主机名路由

routes.corp.type = "Zend_Controller_Router_Route_Hostname"
routes.corp.route = "corp.:domain.:tld"

这样,所有顶级域上所有域上的Subdoamin Corp将被路由。如果你只想要它 site.com 制作它

routes.corp.route = "corp.site.com"

现在您已经路由了子域,您可以通过将其添加到默认值来设置它以将其发送到模块

routes.corp.defaults.module = "corp"

要让它像"正常"一样路由,请通过

routes.corp.chains.index.type = "Zend_Controller_Router_Route"
routes.corp.chains.index.route = ":controller/:action/*"
routes.corp.chains.index.defaults.controller = "index"
routes.corp.chains.index.defaults.action = "index"

这样 corp.site.com/news/view/id/1 将转到公司模块中的新闻控制器