Zend Framework 2路由没有指向正确的操作

时间:2014-04-15 19:06:39

标签: php routing zend-framework2

所以在我的module.config.php我有两条路线,一条指向Panel/Index控制器并且它正在工作,另一条指向Panel\Ads问题就是这个一个,有一个名为edit的子路由,当我访问路由site.com/panel/ads/edit/34仍然从index控制器访问操作Ads时,它应该指向{ {1}}行动。有人可以解释一下我做错了吗?

edit

3 个答案:

答案 0 :(得分:0)

我猜这个问题与您edit路线中的约束有关。约束应该是正则表达式模式,用于限制路径中变量的匹配。例如,您可能希望指定URL中的id必须为数字。你的编辑路线有controlleraction的约束,这两个都不是路线中的变量,所以我不确定ZF会对这些做什么。

您的配置还有其他一些问题。首先,路由名称必须是唯一的。您正在定义两个名为panel的路由,以及两个名为ads的路由。更重要的是,PHP数组中的键必须是唯一的,因此在每种情况下,第二个键都会覆盖第一个键。

您的第一个面板路线和第一个广告路线都是不必要的,因为在每种情况下,第二条路线无论如何都会匹配site.com/panelsite.com/ads

答案 1 :(得分:0)

试试这个:

return array(
    'router' => array(
        'routes' => array(
            'panel' => array(
                'type' => 'Literal',
                'options' => array(
                    'route' => '/panel', 
                    'defaults' => array(
                        '__NAMESPACE__' => 'Panel\Controller',
                        'controller' => 'Index',
                        'action' => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Segment',
                        'options' => array(
                            'route' => '/[:controller[/:action[/:id]]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'id' => '[a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(),
                        ),
                    ),
                ),
            ),
        ),
    ),
);

答案 2 :(得分:0)

找到它,错误发生在edit-ad路径

),
'defaults' => array(
'actions' => 'edit'

最后应该action没有s,重命名并且有效!