2012-07-09 235 views
0

我只是想知道在Zend Framework2中使用Zend_Navigation的最好方法是什麼。目前我正在嘗試爲頁眉和頁腳菜單添加一個配置。兩個菜單都應該自動填充。雖然,我遇到了很多問題:Zend Framework 2:Zend_Navigation

一)默認的菜單最好的地方應該是有希望的應用程序模塊

B)我增加了以下內容module.config.php根:

'view_helpers' => array(
    'helper_map' => array(
      'navigation' => 'Application\View\Helper\Navigation' 
    ), 
), 

我Navigation.php位於./module/Application/src/Application/View/Helper/Navigation.php

,包含:

class Navigation extends AbstractContainer { 
    public function __construct($menu = null) { 
     var_dump($menu); 
    } 
} 

我知道這個類可能是錯的。但是在那一刻,我沒有讓ZF2連載班級。哪裏不對 ?

回答

1

假設你使用beta5--你只是配置你的viewhelper錯誤。請參閱this post關於如何正確執行此操作。

關於如何使用導航:我想創建一個名爲navigation中的ServiceManager服務,並把我的導航到一個新的配置鍵:

return array(
    'navigation' => array(
     // your navigation config goes here 
    ), 
    'servicemanager' => array(
     'factories' => array(
      'navigation' => function($sm) { 
       $config = $sm->get('Configuration'); 
       $navigation = new \Zend\Navigation\Navigation($config->get('navigation')); 
       return $navigation; 
      } 
     ), 
    ), 
    'view_helpers' => array(
     'factories' => array(
      'navigation' => function($sm) { 
       return new \My\View\Helper\Navigation($sm->get('navigation')); 
      } 
     ), 
    ), 
); 

(不知道導航類名避風港」 T中對他們看看)

但這三件事情:

  • 提供一種名爲navigation指向實際實例 如果Zend的導航
  • 提供您的視圖助手,並把它交給你的導航
  • 的實例的引用創建一個新的頂級鍵navigation包含導航配置。其他模塊可以在這裏添加自定義導航,而無需更改任何設置。

例如,在你的控制器,你代碼通過調用

$this->getServiceLocator()->get('navigation'); 

,而在您的視圖助手被它的構造函數可以訪問導航獲取導航實例:

Navigation extends // ... 
{ 
    public function __construct($navigation) 
    { 
     // do anything you want 
    } 
} 

其它模塊通過寫入相同的密鑰將條目添加到導航中:

return array(
    'navigation' => array(
     // further navigation entries 
    ), 
); 

如果你把最初的邏輯(例如設置服務/視圖助手)取決於你。我更喜歡爲此編寫一個自己的模塊,這可以用一行代碼禁用(導致導航不再存在)。但是默認模塊也可能是一個好地方。 最終,您可以爲導航和視圖幫助程序創建自己的工廠類,而不是將配置與代碼混合。

聲明:Code只是一個草稿 - 沒有經過測試。

+0

感謝您給我正確的方向! ;) – gmuehl 2012-07-10 13:07:54