大家好!
我正在学习zf2,并尝试设置一个导航面板(基于:Zend Framework 2: Zend_Navigation),但是计算机的答案仍然是:
发生错误
执行期间发生错误;请稍后再试。
附加信息:
Zend \ ServiceManager \ Exception \ ServiceNotFoundException
文件:
/var/www/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:453
信息:
Zend \ ServiceManager \ ServiceManager::get无法获取或创建导航实例
module.config.php包含:
'servicemanager' => array(
'factories' => array(
'navigation' => function($sm) {
$config = $sm->get('Config');
$navigation = new \Zend\Navigation\Navigation($config->get('navigation'));
return $navigation;
}
),
),
我在主config / autoload文件夹中有一个application.global.php,看起来像:
<?php
return array(
// All navigation-related configuration is collected in the 'navigation' key
'navigation' => array(
// The DefaultNavigationFactory we configured in (1) uses 'default' as the sitemap key
'default' => array(
// And finally, here is where we define our page hierarchy
'Album' => array(
'label' => 'Albumlista',
'route' => 'album',
'action' => 'index',
'pages' => array(
array(
'label' => 'Add',
'route' => 'album',
'action' => 'add'
)
)
),
'Application' => array(
'label' => 'Alap alkalmazás',
'route' => 'application',
'action' => 'index',
)
),
),
);
然后从 Controller 发出以下命令:
$config = $this->getServiceLocator()->get('navigation');
有人可以帮我解决这个问题吗?
我读到有关http://adam.lundrigan.ca/2012/07/quick-and-dirty-zf2-zend-navigation/的信息,尝试过,但确实做到了,但是我想与acl结合使用,以便编写此问题。
感谢您的帮助!
最佳答案
如果您查看Naviagtion类的构造函数,则它需要Pages数组或Traversable对象。您要传入一个内部包含页面数组的数组,请尝试以下操作:
'servicemanager' => array(
'factories' => array(
'navigation' => function($sm) {
$navigation = new \Zend\Navigation\Service\DefaultNavigationFactory;
$navigation = $navigation->createService($sm);
return $navigation;
}
),
),
默认工厂将通过在导航配置下查找默认节点来自动找到您的配置。
您也可以按照自己的方式进行操作,但是将“默认”节点(在配置中的“导航”节点下)传递给“导航”构造器,因为这是实际的页面定义。