【问题标题】:How do you create a module specific router in the Zend Frameowrk?如何在 Zend 框架中创建一个特定于模块的路由器?
【发布时间】:2012-06-13 14:38:52
【问题描述】:

我的 Zend Framework application.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 模块时应用上述路由。

提前致谢!

【问题讨论】:

  • 路由决定了模块,那么“上述路由适用于每个模块”是什么意思?您的路由将匹配对/artists/something 的任何请求 - 在什么情况下它不匹配?
  • 我已经编辑了这个问题,因为它在评论中不清楚。

标签: php zend-framework configuration


【解决方案1】:

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

要做到这一点,你必须告诉 zend route 使用主机名路由

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

这样,所有顶级域上的所有域上的子域 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 将转到 corp 模块中的 newsController

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多