2012-10-20 88 views
3

我正在嘗試將主導航與子菜單結合使用以進行更具體的導航。ZF2 - 使用導航視圖助手的多個導航菜單

在我佈局我打電話這樣的視圖助手:

$this->navigation('main_navigation')->menu() 

在我觀點我打電話這樣說:

$this->navigation('sub_navigation')->menu() 

的問題是,每當我多次撥打navigation()查看幫手一個,它只是ou在兩個地方輸入第二個。換句話說,它打印的subnav主導航 subnav菜單。

我合併的配置是這樣的:

'navigation' => array(
    'main' => array(
     'home' => array(
      'label' => 'Home', 
      'route' => 'myroute', 
     ), 
     'somepage' => array(
      'label' => 'Me', 
      'route' => 'somepage' 
     ) 
    ), 
    'sub' => array(
     'test' => array(
      'label' => 'Test', 
      'route' => 'myroute', 
      'action' => 'test' 
     ), 
     'other-test' => array(
      'label' => 'Other Test', 
      'route' => 'myroute', 
      'action' => 'other-test' 
     ) 
    ) 
) 

如何使用navigation視圖助手,以便它將打印每個調用正確的菜單?

+1

查看此問題的回答:http://stackoverflow.com/questions/12972316/how-to-set-up-2-navigations-in-zf2 – Sam

+0

@Sam這不起作用。我昨晚在ZFtalk IRC頻道上花了6個小時與ZfcAdmin和ZfcUser的某個_creators_聊天,他能夠成功地複製我的_error_而無法解析它。我已經準備好了我的應用程序,它不起作用。**這就是要點。 –

+0

@Sam謝謝你發現無論如何。 :) –

回答

11

menu,breadcrumbs,sitemaplinks幫助者被註冊爲插件。如果您第一次致電$this->navigation('main_navigation'),則Zend\View\Helper\Navigation會創建容器「main_navigation」。如果您接着撥打menu()第一次Zend\View\Helper\Navigation\Menu對象創建並直接容器被注入。

這表明存在缺陷:如果您現在致電$this->navigation('sub_navigation'),則導航容器將加載到navigation()視圖幫助程序中。當您再撥打menu()時,菜單視圖助手已經創建。所以新的容器不再被注入。

顯然這是代碼庫中的一個錯誤。有一個快速修復:菜單助手還可以接受容器字符串:

<?php echo $this->navigation()->menu('main_navigation'); ?> 
<?php echo $this->navigation()->menu('sub_navigation'); ?> 

我已經提交了有關問題,它和錯誤會被修正。

+0

哦,你是一個**救星**!非常感謝:) –

+1

沒問題!關於這個的問題可以在這裏找到:https://github.com/zendframework/zf2/issues/2817 –