我有以下问题…
我的导航栏:
return array(
'navigation' => array(
'site' => array(
array(
'label' => 'Home',
'route' => 'site',
),
'categories' => array(
'label' => 'Categories',
'class' => 'categories',
'uri' => '#',
),
'contact-us' => array(
'label' => 'Contact Us',
'route' => 'site/contact-us',
),
),
),
);
在我的Module.php中我有function:
public function attachSubMenu($serviceManager) {
$siteNavigation = $serviceManager->get('siteNavigation');
$router = $serviceManager->get('router');
$categoriesTable = $serviceManager->get('Category/Model/Table/CategoriesTable');
$categories = $categoriesTable->fetchAll();
$categoriesRoute = $siteNavigation->findByClass('categories');
if (!is_null($categoriesRoute)) {
$pages = array();
foreach ($categories as $category) {
$newPage = new Mvc(array(
'label' => $category->name,
'route' => 'site/categories',
'params' => array(
'category' => $category->route
),
));
$newPage->setRouter($router);
array_push($pages, $newPage);
}
$categoriesRoute->addPages($pages);
}
}
到目前为止一切顺利。现在我有菜单与类别项目和列表与类别的子菜单的类别。但是,当我单击列出的类别之一时,子菜单和父元素都没有类"active"。当我点击主页,我有类"活动",所以问题是在类别列表的某个地方,在我看来。
这是我如何在布局中显示导航:
<?= $this->navigation('siteNavigation')->menu()->setMaxDepth(1); ?>
我调试发现,当我动态生成这些类别在ZendNavigationPageMvc -> isActive函数$this->getRoute()不返回类别路由…如果我像这样添加分类:
return array(
'navigation' => array(
'site' => array(
array(
'label' => 'Home',
'route' => 'site',
),
'categories' => array(
'label' => 'Categories',
'class' => 'categories',
'uri' => '#',
'pages' => array(
array(
'label' => 'Cat1',
'route' => 'site/categories',
'params' => array(
'category' => 'cat1'
),
//.....
),
),
),
'contact-us' => array(
'label' => 'Contact Us',
'route' => 'site/contact-us',
),
),
),
);
一切正常。子菜单和父菜单有一个类"active"....
有办法解决这个问题吗?
我想我找到解决办法了…
RouteMatch在新页面中没有设置,所以我在后面增加了一行:
$newPage->setRouter($router);
$newPage->setRouteMatch($routeMatch);//The new line;
然后我的导航工作正常。