Zend 2导航渲染活动类缺失

时间:2014-08-09 14:40:23

标签: zend-framework2 zend-navigation

我确实有关于在zf2中渲染导航的问题。我还没有发现其他人有这个问题。但也许你有一个线索。

虽然一切似乎都是正确配置的,但是由于事实确实一切正常,渲染zend导航并没有用class =" active"来标记活动路线。

这是我的module.config.php:

的一部分
'service_manager' => array(
        'factories' => array(
            'app_navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
            'User\Acl\Service' => 'User\Acl\ServiceFactory',
            'User\Auth\Service' => 'User\Authentication\ServiceFactory',
        ),
    ),

//global config key for all navigation configurations
'navigation' => array(
     //name of the DefaultNavigation created by DefaultNavigationFactory
     'default' => array(
         //config of first page
         'welcome' => array(
             'label' => 'Home',
             'route' => 'welcome',
             'controller' => 'People\Controller\PeopleController',
             'action' => 'welcome',
             'type' => 'uri',
             'uri' => '/welcome',
             'module'    => 'TheGlobalDatabase',
         ),
...

这是路线:

     'router' => array(       
        'routes' => array(
           'welcome' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/welcome',
                    'defaults' => array(
                        'controller' => 'People\Controller\People',
                        'action'     => 'welcome',
                    ),
                ),
            ),

我在布局中回显导航,如下所示:

echo $this->navigation()->menu()->renderMenu('app_navigation',array('ulClass'=>'nav navbar-nav welcome')); 

也许你有一个提示,还有什么要检查。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

路线和导航中的配置都丢失或不正确。

<强>导航

  • 使用数组配置时,您永远不需要使用type参数。导航工厂的工作是确定类型是uri还是mvc。只需删除它的配置。

  • 导航controller应该是控制器的注册服务名称,而不是完全限定的类名。 'controller' => 'People\Controller\People'

  • 使用路线参数时也是You do not need to specify the controller and action in the navigation config

通过这些更改,导航非常简单。

 'welcome' => array(
   'label' => 'Home',
   'route' => 'welcome'
 );

<强>路线

它可能是Literal路由(因为没有传入任何参数),并且您缺少may_terminate参数which will be required if you wish to match on your route

'welcome' => array(
    'type'    => 'literal',
    'options' => array(
        'route'    => '/welcome',
        'defaults' => array(
            'controller' => 'People\Controller\People',
            'action'     => 'welcome',
        ),
    ),
    'may_terminate' => true,
),