Zend框架2导航错误

时间:2014-02-18 08:21:18

标签: navigation zend-framework2

我得到了一个zend 2导航错误,似乎无法找到它的解决方案。搜索了一切,尝试了一切......

这是我的配置:

路线(Application/config/module.config.php)

'home' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Index',
                        'action'     => 'index',
                    ),
                ),
            ),

工厂(Application/config/module.config.php)

'service_manager' => array(
        'factories' => array(
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',

        ),

导航(Application/config/module.config.php)

'navigation' => array(
        'default' => array(

            array(
                'label' => 'home',
                'route' => 'home', 
            ),
        ),
    ),

布局(Application\view\layout\layout.phtml)

 <?php echo $this->navigation('navigation')->menu(); ?>

错误:

Uncaught exception 'Zend\Navigation\Exception\InvalidArgumentException' with message 'Invalid argument: $route must be a non-empty string or null' in 
/var/www/html/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 904

Zend\Navigation\Exception\InvalidArgumentException: Invalid argument: $route must be a non-empty string or null in /var/www/html/project/vendor/zendframework/zendframework/library/Zend/Navigation/Page/Mvc.php on line 397

上一个例外:

Zend\ServiceManager\Exception\ServiceNotCreatedException: An exception was raised while
 creating "navigation"; no instance returned in /var/www/html/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 904

有什么问题?我似乎无法让它工作,......

1 个答案:

答案 0 :(得分:1)

您的配置在这里看起来很好;虽然错误表示您将null作为路由值传递给某个地方的Mvc类。

请记住,如果您在其他模块(module.config.php)中有任何其他导航配置,这些模块在引导期间也将包含在工厂中。

  

我在尝试合并来自不同模块的多个导航配置时出现了另一个错误:无效参数:无法确定要实例化的类

错误是由于导航工厂不知道它是应该创建Zend\Navigation\Page\Mvc还是Zend\Navigation\Page\Uri。这意味着您在module.config.php中的“导航”配置中缺少一些配置条目。

要确保工厂可以创建正确的工厂,您需要确保以下

  • URI页面 - 需要uri密钥
  • MVC页面 - 需要route密钥或一个(或两个)controlleraction密钥

您可以在navigation documentation

中详细了解相关信息