所以在我的module.config.php
我有两条路线,一条指向Panel/Index
控制器并且它正在工作,另一条指向Panel\Ads
问题就是这个一个,有一个名为edit
的子路由,当我访问路由site.com/panel/ads/edit/34
仍然从index
控制器访问操作Ads
时,它应该指向{ {1}}行动。有人可以解释一下我做错了吗?
edit
答案 0 :(得分:0)
我猜这个问题与您edit
路线中的约束有关。约束应该是正则表达式模式,用于限制路径中变量的匹配。例如,您可能希望指定URL中的id
必须为数字。你的编辑路线有controller
和action
的约束,这两个都不是路线中的变量,所以我不确定ZF会对这些做什么。
您的配置还有其他一些问题。首先,路由名称必须是唯一的。您正在定义两个名为panel
的路由,以及两个名为ads
的路由。更重要的是,PHP数组中的键必须是唯一的,因此在每种情况下,第二个键都会覆盖第一个键。
您的第一个面板路线和第一个广告路线都是不必要的,因为在每种情况下,第二条路线无论如何都会匹配site.com/panel
和site.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
,重命名并且有效!