【问题标题】:Rewrite Route to map to default route重写路由以映射到默认路由
【发布时间】:2009-08-12 10:12:07
【问题描述】:

由于我在这里遇到的问题:Zend_ Controller_ Router_Exception: “xyz” is not specified

我想要这条路线:

":module/:controller/:id"

并将其映射到此:

":module/:controller/:action/id/$id"

Zend 框架有没有可能做到这一点?我不想将浏览器转发到该 URL。我只是想告诉 Zend Framework 如何处理这条路由。

至于我想这样做的原因,您可以在链接的 SO 问题中找到它们。

【问题讨论】:

    标签: zend-framework map routes rewrite


    【解决方案1】:

    是的,这是可能的。在我的 application.ini 中,我以这种方式使用正则表达式指定我的路由:

    resources.router.routes.something.type = "Zend_Controller_Router_Route_Regex"
    resources.router.routes.something.route = "mymodule/mycontroller/([0-9]+)"
    resources.router.routes.something.defaults.module = "mymodule"
    resources.router.routes.something.defaults.controller = "mycontroller"
    resources.router.routes.something.defaults.action = "myaction"
    resources.router.routes.something.map.1 = "id"
    

    我不熟悉 ":variable" 定义路由的方式,但是您可以从我的示例中获得设置默认控制器、模块和操作的能力,而无需在 url 中明确定义它们。

    【讨论】:

    • 这并不能解决我的问题。我想将一条路线映射到另一条路线上。在您的示例中,您创建了另一个静态放置模块、控制器和操作的路由。我想保留模块、控制器和操作的变量。
    • 我没有说它会解决它。我从我的代码中提供了一个示例,除了向您展示它可能将一条路线映射到另一条路线之外,您应该希望能够使用它来建立您的路线。您可以轻松地将“mymodule/mycontroller/([0-9]+)”替换为“([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+) " 然后将 1 映射到模块,2 映射到控制器,3 映射到 id。
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 2018-02-14
    • 1970-01-01
    • 2019-04-26
    • 2016-03-27
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多