Zend Framework 2 中的路由问题和超时


Routing issues and timeout in Zend Framework 2

我正在尝试实现下面解释的路由,但遇到了很多麻烦(文档就像一门外语)。每个模块的路由是否应该在该模块的配置文件中保持独立?

  • "路由":模块/控制器/动作
  • "/":应用程序/索引/索引
  • "/:
  • 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 将自动合并它。因此,您需要将homecampaign路由存储在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/updateAdmin'Controller'Admin->updateAction()

3)我认为仅使用路由配置无法进行一些递归循环。因此,请在控制器/服务中检查您的代码