0

我是 Zend 框架的新手 我在 Zend 上遇到了路由器和模块化问题 我有一个 router.ini 可以通过友好的 URL 重写进行路由:

routers.prod-cat-details.type           = Zend_Controller_Router_Route_Regex
routers.prod-cat-details.route          = "([a-zA-Z0-9\-]+)/*([a-zA-Z0-9\-]+)/*([a-zA-Z0-9\-]+)\.html"
routers.prod-cat-details.defaults.module         = "default"
routers.prod-cat-details.defaults.controller    = "products"
routers.prod-cat-details.defaults.action         = "detail"
routers.prod-cat-details.map.1          = "uri_cat_level0"
routers.prod-cat-details.map.2          = "uri_cat"
routers.prod-cat-details.map.3          = "uri"


routers.prod-cat-parent.type            = Zend_Controller_Router_Route_Regex
routers.prod-cat-parent.route           = "([a-zA-Z0-9\-]+)/*([a-zA-Z0-9\-]+)"
routers.prod-cat-parent.defaults.module         = "default"
routers.prod-cat-parent.defaults.controller     = "products"
routers.prod-cat-parent.defaults.action         = "category"
routers.prod-cat-parent.map.1           = "uri_cat_level0"
routers.prod-cat-parent.map.2           = "uri_cat"


routers.prod-cat.type           = Zend_Controller_Router_Route_Regex
routers.prod-cat.route          = "([a-zA-Z0-9\-]+)"
routers.prod-cat.defaults.module        = "default"
routers.prod-cat.defaults.controller    = "products"
routers.prod-cat.defaults.action        = "category"
routers.prod-cat.map.1          = "uri_cat"

当我不使用路由器时,我的代码分为模块(不要在 Boottrap 上设置路由器),我可以使用模块 zend(exp: localhost/admin -> 转到管理模块)但是当我激活路由时 -> localhost /admin -> 转到“产品”控制器“类别”操作

请帮我解决这个问题。在此先感谢(抱歉我的英语不好:D)

4

1 回答 1

0

您的问题是您的“prod-cat”路由将匹配对 的请求/admin,因为您提供的正则表达式模式将匹配任何字符串。您需要对该路由设置一些限制以缩小其匹配范围,或者在其下方添加一些静态路由以匹配您想要转到其他控制器的某些页面,例如 /admin。

请参阅我对这个问题的回答:Zend Routing questions ,了解有关 ZF 中路由如何工作的更多背景知识,这应该可以解释一些事情。

于 2012-04-15T22:26:54.053 回答