【问题标题】:Zend framework routeZend 框架路线
【发布时间】:2010-11-26 02:06:19
【问题描述】:

我的模块中有以下控制器..

用户控制器.php AdminUserController.php

现在管理控制器的路由转到:module/admin-user/(默认行为)

如何创建路由,以便将所有 admin- 更改为:

/管理员/模块/用户

【问题讨论】:

    标签: zend-framework routing


    【解决方案1】:

    您必须编写自定义路线。

    在代码中:

    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $route  = new Zend_Controller_Router_Route(
        'admin/:module/user', array('controller' => 'admin-user'));
    $router->addRoute('module-admin-router', $route);
    

    在 .ini 文件中(我喜欢将我的文件与 application.ini 分开):

    [routes]
    routes.module-admin-router.type = "Zend_Controller_Router_Route"
    routes.module-admin-router.route = "archive/:module/user"
    routes.module-admin-router.defaults.controller = "admin-user"
    

    然后您必须引导该应用程序部分以启用路由;

    protected function _initRoutes ()
    {
        // setup routes here.
        $front  = $this->getResource('frontcontroller');
        $router = $front->getRouter();
        $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', 'routes');
        $router->addConfig($config->routes);
    
    }
    

    此路由将匹配任何管理员/模块/用户请求并将其发送到匹配模块中的 AdminUserController。

    类似的东西应该可以。现在,如果事情变得非常复杂,您可能需要深入研究正则表达式路由器 - 但这就像我认为的那样简单。

    【讨论】:

    • 是否可以在 application.ini 中使用正则表达式路由器进行此操作:P 因为我需要以相同的方式路由所有模块。
    • 谢谢,但我似乎无法在使用的控制器中获取变量.. 示例:resources.router.routes.module-admin-router.route = "admin/:module/:controller/:action" resources.router.routes.module-admin-router.defaults.controller = "admin-:controller" 不起作用:(
    • 这行不通。不幸的是,你不能注入这样的变量。该路由可能需要转换为正则表达式路由才能进行更复杂的匹配。
    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2014-07-19
    相关资源
    最近更新 更多