【发布时间】:2015-01-11 03:48:41
【问题描述】:
我在 routes.ini 文件中为一个简单的问答应用定义了一些路由:
; e.g. /5/slug-of-the-title
routes.show_question.route = ":id/:slug"
routes.show_question.defaults.controller = "questions"
routes.show_question.defaults.action = "get"
routes.show_question.defaults.slug = null
; e.g. /ask
routes.ask.route = "ask"
routes.ask.defaults.controller = "questions"
routes.ask.defaults.action = "new"
; .. below this, similar route patterns e.g. "register", "login", etc
现在可以了,我可以访问我的应用程序的以下路径:
/5/slug-of-the-title
/5
/ask
/register
/login
但是,只有在顶部声明了 ":id/:slug" 时它才有效。否则我会收到一条错误消息,提示“未指定 id”。我认为底部是有意义的,因为其他路线将无法匹配(/5 不匹配“询问”),但似乎顶部成功了。这是为什么呢?
此外,以前有效的路由,例如 /account(默认为帐户控制器和索引操作)不再有效。我是否必须声明所有以前默认工作的路由?我希望只声明异常路由,而让其他路由默认处理 (:controller/:action)。
顺便说一句,我确实尝试过声明一条“包罗万象”的路线:
; catch all
routes.ask.route = ":controller/:action"
routes.ask.defaults.controller = "index"
routes.ask.defaults.action = "index"
我认为声明它的合乎逻辑的地方将再次位于底部。我的理解是 Zend 会尝试在脚本上按顺序匹配路由,当没有匹配时,这将是默认路由。但是,我把它放在哪里并不重要 - 顶部,底部,在“:id /:slug”之后至少一页会给我“id is not specified”错误。谁能解释我哪里出错了?谢谢
【问题讨论】:
标签: php zend-framework