如何将导航配置导入到我的视图助手中?

时间:2014-04-11 13:21:36

标签: php zend-framework2

使用zf2我有一个如下所示的视图助手:

class Navbar extends AbstractHelper implements ServiceLocatorAwareInterface {

    public function setServiceLocator(ServiceLocatorInterface $serviceLocator) {
        $this->serviceLocator = $serviceLocator;
        return $this;  
    }

    public function getServiceLocator() {
        return $this->serviceLocator;
    }

    public function __invoke($container) {
        $partial = array('partial/subNav.phtml','thisMeansNothing');
        //github.com/zendframework/zf2/issues/3457
        $navigation = $this->getServiceLocator()->get('navigation');
        $navigation($container)->menu()->setPartial($partial);

        return $navigation->menu()->render();

    }
}

这对我来说非常有效,因为我可以在我的观点中做echo $this->navbar('navigation');

在我的模块的module.config.php中,我有这个:

...
    'navigation' => array(
        'default' => array(
            array(
                'label' => 'eeee',
                'route' => 'link',
            ),
            array(
                'label' => 'sdlfkj',
                'route' => 'link',
            ),
            array(
                'label' => 'sdlkfj',
                'route' => 'link',
            ),
        ),

        'test' => array(
            array(
                'label' => 'aaaa',
                'route' => 'link',
            ),
            array(
                'label' => 'bbbbb',
                'route' => 'link',
            ),
        ),
    ), 
...

如何进行测试'在导航下配置到我的视图助手而不是默认值?

1 个答案:

答案 0 :(得分:1)

您正在加载另一个导航'树'。这个树必须独立设置,不幸的是,这需要几个步骤。我之前已经解释了如何解决此问题in this answer

基本上,您必须创建第二个导航工厂,将工厂链接到导航服务名称,并在视图助手中使用该服务名称。