作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个主导航配置link第二个只有 1 link .主导航工作正常,但是当我尝试在模块中设置第二个导航栏时,如下所示:
$config = $e->getApplication()->getServiceManager()->get('config');
$navigation = new \Zend\Navigation\Navigation($config['navigation_footer']);
$e->getApplication()->getServiceManager()
->setService('new_navigation', $navigation);`
Fatal error: Zend\Navigation\Exception\DomainException: Zend\Navigation\Page\Mvc::getHref cannot execute as no Zend\Mvc\Router\RouteStackInterface instance is composed in /home/cawa/www/sp-app/vendor/zendframework/zendframework/library/Zend/View/Helper/Navigation/AbstractHelper.php on line 471
最佳答案
问题是缺少路由器(或更准确地说,是 Zend\Mvc\Router\RouteStackInterface
)。路由堆栈是路由的集合,可以使用路由名称将其转换为 url。基本上它接受一个路由名称并为您创建一个 url:
$url = $routeStack->assemble('my/route');
Zend\Navigation
的 MVC 页面中也。该页面有
route
参数,当有可用的路由器时,页面将组装它自己的 url(或
Zend\Navigation
术语,一个
href
)。如果您不提供路由器,则它无法组装路由并因此引发异常。
$navigation = new Navigation($config);
$router = $serviceLocator->get('router');
function injectRouter($navigation, $router) {
foreach ($navigation->getPages() as $page) {
if ($page instanceof MvcPage) {
$page->setRouter($router);
}
if ($page->hasPages()) {
injectRouter($page, $router);
}
}
}
default
导航,可以创建第二个
secondary
.
'navigation' => array(
'secondary' => array(
'page-1' => array(
'label' => 'First page',
'route' => 'route-1'
),
'page-2' => array(
'label' => 'Second page',
'route' => 'route-2'
),
),
),
route-1
) 和第二页 (
route-2
) 的路线。
SecondaryNavigationFactory.php
在您的 MyModule/Navigation/Service 目录中。
namespace MyModule\Navigation\Service;
use Zend\Navigation\Service\DefaultNavigationFactory;
class SecondaryNavigationFactory extends DefaultNavigationFactory
{
protected function getName()
{
return 'secondary';
}
}
secondary
此处,与您的导航键相同。
Zend\Navigation
目的。您可以在 module.config.php 中执行此操作:
'service_manager' => array(
'factories' => array(
'secondary_navigation' => 'MyModule\Navigation\Service\SecondaryNavigationFactory'
),
)
secondary_navigation
在这里,工厂将返回
Zend\Navigation
那么实例。如果你现在这样做
$sm->get('secondary_navigation')
你会看到这是一个
Zend\Navigation\Navigation
目的。
secondary_navigation
这就是我们需要的。
<?= $this->navigation('secondary_navigation')->menu() ?>
secondary
在这个 View 助手中使用。
关于navigation - 如何在 zf2 中设置 2 个导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972316/
我是一名优秀的程序员,十分优秀!