Zend framework Zend框架路由

Zend framework Zend框架路由,zend-framework,routing,Zend Framework,Routing,我的模块中有以下控制器 UserController.php AdminUserController.php 现在,管理员控制器的路径转到:模块/管理员用户/(默认行为) 我如何制作一个路由,以便将所有管理员更改为: /管理员/模块/用户您必须编写自定义路由 代码: $front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $route = new Zend_Controller_Route

我的模块中有以下控制器

UserController.php AdminUserController.php

现在,管理员控制器的路径转到:模块/管理员用户/(默认行为)

我如何制作一个路由,以便将所有管理员更改为:


/管理员/模块/用户

您必须编写自定义路由

代码:

$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分开):

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

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


这样的办法应该行得通。现在,如果事情变得非常复杂,您可能需要深入研究regex路由器-但这是我所能想到的最简单的方法。

是否可以在application.ini中使用regex路由器执行此操作:p因为我需要以相同的方式路由所有模块。谢谢,但我似乎无法在使用的控制器中获取变量。。示例:resources.router.routes.module-admin-router.route=“admin/:module/:controller/:action”resources.router.routes.module-admin-router.defaults.controller=“admin-:controller”不起作用:(这将不起作用。很遗憾,您不能像那样注入变量。此路由可能需要转换为正则表达式路由才能进行更复杂的匹配。
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);

}