zf2设置导航栏的方法

mlm*_*zki 2 navigation configuration zend-framework initialization zend-framework2

我正在努力连接ZF1在引导程序中初始化东西的方式和从配置文件中注入东西的ZF2方式之间的点(貌似).

也就是说,在ZF1中,我的boostrap中有这样的东西:

protected function _initNavigation()
{
    $this->bootstrap('layout');
    $this->bootstrap('view');

    $navigation = new Zend_Navigation();

    // ...code to add pages...

    $layout = $this->getResource('layout');
    $view = $layout->getView();

    $view->navigation($navigation);
}
Run Code Online (Sandbox Code Playgroud)

在ZF2中,我甚至不确定要开始寻找什么,以实现类似的目标.

我已经阅读了以下帖子:

public function onBootstrap (Event $e)
{
}
Run Code Online (Sandbox Code Playgroud)

以及你可以做的事情:

$application = $e->getApplication();
$services    = $application->getServiceManager();
Run Code Online (Sandbox Code Playgroud)

但是,相当于:

$layout = $this->getResource('layout');
$view = $layout->getView();
$view->navigation($navigation);
Run Code Online (Sandbox Code Playgroud)

我会在Module中执行此操作,还是在配置文件中更好地完成并注入?如果注射,怎么样?

我已经阅读了Rob Allen的教程,并且一直在网上搜索超出教程级代码的例子.我发现的东西(像其他ZF2模块一样)更倾向于工作模块(可以理解),而不是通过例子向其他人传达细微差别...因为我在这个主题上找不到太多,我我假设有一些小的,基本的东西我错过了 - 当我看到它 - 会让一切都有意义.

小智 5

'service_manager' => array(
    'factories' => array(
        'Navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
    ),
),
Run Code Online (Sandbox Code Playgroud)

在模块配置中添加此行,它将起作用.