Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2:活动菜单项_Php_Zend Framework2 - Fatal编程技术网

Php Zend Framework 2:活动菜单项

Php Zend Framework 2:活动菜单项,php,zend-framework2,Php,Zend Framework2,从配置生成导航: 'navigation' => array( 'default' => array( 'admin' => array( 'label' => 'Administration', 'controller' => 'index', 'action' => 'index', 'route' =&g

从配置生成导航:

'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',
              ),
  /* ... */
路由的配置就像它是真的一样。菜单中的导航功能正常。链接菜单指向所需模块的所需控制器/操作。但在引入菜单和转换到一个或另一个菜单项时,active同时标记了这两个点以及“管理”和“相册”。据我所知,这是因为控制器的名称和操作与它们匹配,但仍然存在“路由”,而且它是不同的。。。毫无疑问,每个项目都会生成不同的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(
                        ),
                    ),
                ),
相册路由配置类似


为什么会这样?谢谢。

看起来ZF2就是这样工作的(请阅读Zend\Navigation\Page\Mvc.php中的
isActive()
函数)。最初它检查路由/控制器/操作的匹配,但如果失败,ZF2将再次检查控制器/操作对。因此,有三种可能的方法:

  • 在打开一张票证并等待响应

  • 覆盖
    \Zend\Navigation\Page\Mvc

  • 为控制器选择不同的名称(不要使用
    index
    name,因为它是Mvc.php中控制器的默认名称)


  • 如果使控制器名称包含命名空间,则它们将是唯一的且不会冲突:

    Admin\Controller\IndexController
    Album\Controller\IndexController
    
    而不是

    Index
    Index