Zend framework2 Zend Framework 2导航';s例外
我想在layout.phtml文件中显示导航菜单:Zend framework2 Zend Framework 2导航';s例外,zend-framework2,Zend Framework2,我想在layout.phtml文件中显示导航菜单: <?php echo $this->navigation('navigation')->menu(); ?> 然后我为Zend/Navigation实例编写了一个加载程序: 'service_manager' => array( 'factories' => array( 'translator' => 'Zend\I18n\Translator\Transla
<?php echo $this->navigation('navigation')->menu(); ?>
然后我为Zend/Navigation实例编写了一个加载程序:
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
),
),
但我反复遇到这个例外:
致命错误:Zend\Mvc\Router\Exception\RuntimeException:路由为
在中找不到名称“”
C:\wamp\www\bsol\vendor\zendframework\zendframework\library\Zend\View\Helper\Navigation\AbstractHelper.php
在线471
我试图解决将此行添加到菜单声明中的问题:
'pages' => array(
'route' => '/place',
'country' => array(
'label' => 'Countries',
'route' => '/place/country',
),
然而,在这种情况下,我得到了另一个不同的例外:
致命错误:未捕获异常
带有消息的“Zend\Navigation\Exception\InvalidArgumentException”
'无效参数:$page必须是的实例
Zend\Navigation\Page\AbstractPage或Traversable,或中的数组
C:\wamp\www\bsol\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php
在线733
更新:根据Jurian Sluiman的建议
这必须是我的路由器配置(module\Place\config\module.config.php),如果我有一个名为“Place”的模块,有3个控制器(城市、国家和州):
这一定是我的导航配置(实际上我在/config/autoload/menu.global.php中的一个自动加载文件中找到了这个):
…现在它成功了 通常路线不以
/
开头。/
是路由名称的分隔符,因此当组装/place
路由时,您有一个父级“
,然后是子级“place”
。第一个是空的,给你这个错误
可能您将路由名称与路由本身混淆了。您必须提供路由的名称,因此将返回路由本身(URL)。因此,假设您有以下路由配置:
'router' => array(
'routes' => array(
'place' => array(
'type' => 'literal',
'options' => array(
'route' => '/place',
'defaults' => array(
// Some defaults here
),
),
),
),
),
在这种情况下,您的路线名称是
place
,而不是/place
。如果您有不同的路线配置,那么请将路线配置放入您的问题中,以便我可以更新我的答案。通常路线不以/
开头。/
是路由名称的分隔符,因此当组装/place
路由时,您有一个父级“
,然后是子级“place”
。第一个是空的,给你这个错误
可能您将路由名称与路由本身混淆了。您必须提供路由的名称,因此将返回路由本身(URL)。因此,假设您有以下路由配置:
'router' => array(
'routes' => array(
'place' => array(
'type' => 'literal',
'options' => array(
'route' => '/place',
'defaults' => array(
// Some defaults here
),
),
),
),
),
在这种情况下,您的路线名称是
place
,而不是/place
。如果您有不同的路线配置,请在您的问题中输入路线配置,以便我可以更新我的答案。是。你说得对。当我为我的模块编写路由配置时,我犯了一些错误。啊哈,这个答案也帮助了我,当我输入路由时,它有一个大括号,打破了一切,但错误消息与它们不是“翻译者”有关:致命错误:未捕获异常“Zend\Mvc\Router\exception\RuntimeException”,在
中显示消息“未提供翻译程序”,这让我很生气。是的。你说得对。当我为我的模块编写路由配置时,我犯了一些错误。啊哈,这个答案也帮助了我,当我输入路由时,它有一个大括号,打破了一切,但错误消息与它们不是“翻译者”有关:致命错误:未捕获的异常“Zend\Mvc\Router\exception\RuntimeException”,在
中显示消息“未提供翻译程序”,这让我很生气。
return array(
'navigation' => array(
'default' => array(
'place' => array(
'label' => 'Places',
'route' => 'country',
'pages' => array(
'country' => array(
'label' => 'Countries',
'route' => 'country',
),
'state' => array(
'label' => 'States',
'route' => 'state',
),
'city' => array(
'label' => 'Cities',
'route' => 'city',
),
),
),
),
),
);
'router' => array(
'routes' => array(
'place' => array(
'type' => 'literal',
'options' => array(
'route' => '/place',
'defaults' => array(
// Some defaults here
),
),
),
),
),