从配置构建导航:
'navigation' => array(
'default' => array(
'admin' => array(
'label' => 'Administration',
'controller' => 'index',
'action' => 'index',
'route' => 'admin/default',
),
'album' => array(
'label' => 'Album',
'controller' => 'index',
'action' => 'index',
'route' => 'album/default',
),
/* ... */
路由配置就像是真的。菜单中的导航工作。链接菜单指向所需模块的所需控制器/操作。但是,在引入菜单和转换到一个或另一个菜单项时,活动同时标记两个点和“管理”和“相册”。据我所知,由于控制器和动作的名称与它们相匹配的原因,但仍然存在“路线”并且它不同......不是没有为每个项目生成不同的URL ...但不知何故,尽管如此这个,他们都被标记为活跃。
路由配置:
'router' => array(
'routes' => array(
'admin' => array(
'type' => 'Literal',
'options' => array(
'route' => '/admin',
'defaults' => array(
'__NAMESPACE__' => 'Admin\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller][/:action[/id:id]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
),
),
),
相册路由配置类似...
为什么会这样?感谢。
答案 0 :(得分:0)
看起来这是ZF2的工作方式(在Zend \ Navigation \ Page \ Mvc.php中读取isActive()
函数)。最初它检查路由/控制器/动作的匹配,但如果失败,ZF2再次检查控制器/动作对。所以有三种可能的方式:
在https://github.com/zendframework/zf2/issues打开一张门票并等待回复。
覆盖\Zend\Navigation\Page\Mvc
。
为控制器选择不同的名称(并且不要使用index
名称,因为它是Mvc.php中控制器的默认名称。
答案 1 :(得分:0)
如果您使控制器名称包含命名空间,那么它们将是唯一的并且不会发生冲突:
Admin\Controller\IndexController
Album\Controller\IndexController
而不是
Index
Index