Zend框架2:Zend_Navigation(Zend Framework 2: Zend_Nav

2019-07-30 08:05发布

我只是想知道什么是最好的方式,在Zend的Framework2使用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甚至加载类。 怎么了 ?

Answer 1:

假设你正在使用beta5的 - 你只是配置您的视图助手错误。 见这个职位上如何做是正确的。

关于如何使用导航:我想创建中的ServiceManager称为服务navigation ,并把我的导航到一个新的配置项:

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'));
            }
        ),
    ),
);

(不知道导航类的名字。还没有对他们的样子。)

这做了三两件事:

  • 提供了一个叫服务navigation指向实际来说,如果Zend的导航
  • 提供您的视图助手,并把它交给你的导航的实例的引用
  • 创建一个新的顶级键navigation包含了导航配置。 其它模块可以在这里添加自定义导航,而无需在安装任何更改。

例如,在你的控制器,你的代码通过调用获取导航实例

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

而在您的视图助手访问由它的构造函数导航:

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

其他模块可以通过写入相同的密钥条目添加到您的导航:

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

当你把最初的逻辑(例如建立服务/视图助手)是由你。 我宁愿写一个自己的模块,用于此其可与一个单一的代码行(导致不存在导航了)被禁用。 但是默认的模块可能是一个不错的地方,很好。 最终你可以创建自己的工厂类的导航和视图助手,而不是你的代码混合配置。

免责声明:代码的只是一个草稿 - 未经测试。



文章来源: Zend Framework 2: Zend_Navigation