我正在尝试实现下面解释的路由,但遇到了很多麻烦(文档就像一门外语)。每个模块的路由是否应该在该模块的配置文件中保持独立?
- "路由":模块/控制器/动作
- "/":应用程序/索引/索引 "/:
- example":应用程序/活动/索引(参数"活动"= [示例])
- "/admin":管理员/管理员/索引
- "/admin/login":管理员/访问/登录 "/admin/:
- controller/:action": admin/[defined]/[defined]
试图理解并使用骨架应用程序来做到这一点,一切都在脚本超时的"/admin/controller/action"路由上工作(我猜那里的某个地方有一个递归循环)。我的路由定义是:
'home' => array(
'type' => 'literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application'Controller'Index',
'action' => 'index',
),
),
),
'campaign' => array(
'type' => 'segment',
'options' => array(
'route' => '[/:campaign]',
'constraints' => array(
'campaign' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Application'Controller'Campaign',
'action' => 'index',
'campaign' => ''
),
),
),
'admin' => array(
'type' => 'segment',
'options' => array(
'route' => '/admin',
'defaults' => array(
'controller' => 'Admin'Controller'Admin',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
1)是的,您应该将路由配置分离到模块,ZF2 将自动合并它。因此,您需要将home
和campaign
路由存储在Application/config/module.config.php
中,并将admin
路由存储在Admin/config/module.config.php
2)我在您的配置中没有看到任何全局错误。两件小事:
2.1) 您可以使用literal
代替segment
作为父路由admin
2.2)如果要使用:controller
作为路由参数,请务必通过配置invokables
部分为其制作快捷方式。例如:
'controllers' => array(
'invokables' => array(
'index' => 'Application'Controller'Index'
'admin' => 'Admin'Controller'Admin'
),
),
例如,现在,网址/admin/admin/update
与Admin'Controller'Admin->updateAction()
3)我认为仅使用路由配置无法进行一些递归循环。因此,请在控制器/服务中检查您的代码