2012-07-09 145 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