是否可以在容器中配置路由(空/非路由父路由)?

时间:2015-12-08 22:26:59

标签: model-view-controller routing zend-framework2

我正在创建一个身份验证模块来处理用户登录/注销网站。

我想保持路径简单:

但是,对于应用程序/模块中的某些函数,在某种父类下设置两条路由对我来说是有意义的:

'routes' => array(
    'auth' => array(
        'type'    => 'Literal',
        'options' => array(
            'route'    => '',
        ),
        'may_terminate' => true,
        'child_routes' => array(
            'login' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/login',
                    'defaults' => array(
                        'controller'    => 'Base\Controller\Authentication',
                        'action'        => 'login',
                    ),
                ),
                'may_terminate' => true,
            ),
            'logout' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/logout',
                    'defaults' => array(
                        'controller'    => 'Base\Controller\Authentication',
                        'action'        => 'logout',
                    ),
                ),
                'may_terminate' => true,
            ),
        ),
    ),

问题是 - 在父母中没有任何路由,我无法在任一子路由上获得匹配(/login/logout返回404并出现路由错误。)

如果我在父母中设置路线,例如/auth,那么网址只会匹配为/auth/login/auth/logout

我不希望父母干扰其他模块中的路由 - 例如," home" '/'的路线已经在不同的模块中定义,我不想替换或修改它。

关于我在互联网上发现的与我尝试的内容类似的唯一事情是resolved bug report from 2012

有没有办法定义一个可以在ZF2配置中保存可路由子节点的非路由父节点?

1 个答案:

答案 0 :(得分:0)

'routes' => array( 'auth' => array( 'type' => 'Literal', 'options' => array( 'route' => '/', ), 'may_terminate' => true, 'child_routes' => array( 'login' => array( 'type' => 'Literal', 'options' => array( 'route' => 'login', 'defaults' => array( 'controller' => 'Base\Controller\Authentication', 'action' => 'login', ), ), 'may_terminate' => true, ), 'logout' => array( 'type' => 'Literal', 'options' => array( 'route' => 'logout', 'defaults' => array( 'controller' => 'Base\Controller\Authentication', 'action' => 'logout', ), ), 'may_terminate' => true, ), ), ),