【问题标题】:zf2 navigation - 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for navigation'zf2 导航 - 'Zend\ServiceManager\ServiceManager::get 无法获取或创建导航实例'
【发布时间】:2012-12-02 12:39:34
【问题描述】:

大家好!

我正在学习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',

               )
        ),
    ),

);

我从控制器发出这个命令:

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

有人可以帮我解决这个问题吗? 我读到了 http://adam.lundrigan.ca/2012/07/quick-and-dirty-zf2-zend-navigation/ ,我试过了,我做到了,但我想与 acl 结合,所以我写了这个问题。

感谢您的每一个帮助!

【问题讨论】:

    标签: zend-framework2


    【解决方案1】:

    我认为你正在使用视图助手

    $this->escape($this->somevar); //这是zf1视图助手

    在 zf2 中,您可以使用视图助手进行转义

    $this->escapeHtml($this->somevar);

    【讨论】:

      【解决方案2】:

      当我在application.config.php 中更改以下行时,我的问题解决了

      'config/autoload/{,*.}{global,local}.php', //[This is default setting]
      
      config_glob_paths' => array( '<PUT_ABSOLUTE_PATH_HERE>{,*.}{global,local}.php', ),
      

      代替'config/autoload' 完整路径而不是相对路径。

      【讨论】:

      • 您能解释一下您在 put_absolute_path_here 中插入的内容吗?
      【解决方案3】:

      如果您查看 Naviagtion 类的构造函数,它需要一个 Pages 数组或一个 Traversable 对象。你传入一个数组,里面有一个页面数组,试试这个:

      'servicemanager' => array(
          'factories' => array(
              'navigation' => function($sm) {
                  $navigation = new \Zend\Navigation\Service\DefaultNavigationFactory;
                  $navigation = $navigation->createService($sm);
      
                  return $navigation;
              }
          ),
      ),
      

      默认工厂会通过在你的导航配置下寻找默认节点来自动找到你的配置。

      您也可以保持原样,但将“默认”节点(在配置中的 Navigation 节点下)传递给 Navigation 构造函数,因为这是实际的页面定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        • 2014-01-14
        • 1970-01-01
        • 2023-03-23
        • 2013-09-12
        • 1970-01-01
        • 2012-11-10
        相关资源
        最近更新 更多