我确实有关于在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'));
也许你有一个提示,还有什么要检查。
谢谢大家!
答案 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,
),