我有以下问题......
这是我的导航:
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中我有功能:
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);
}
}
到目前为止一切顺利。现在我有分类项目的菜单和类别列表作为类别的子菜单。但是,当我单击列出的某个类别时,子菜单和父元素都没有“活动”类。当我点击Home时,我的课程“活跃”,所以问题出现在我认为的类别列表中。
这是我在布局中显示导航的方式:
<?= $this->navigation('siteNavigation')->menu()->setMaxDepth(1); ?>
我调试并发现当我在Zend \ Navigation \ Page \ Mvc - &gt;中动态生成这些类别时isActive函数$ this-&gt; 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',
),
),
),
);
一切正常。 subMenu和父菜单的类为“active”....
知道如何解决这个问题吗?
答案 0 :(得分:0)
我想知道我找到了解决方案......
未在新页面中设置RouteMatch,因此我在之后添加了一行:
$newPage->setRouter($router);
$newPage->setRouteMatch($routeMatch);//The new line;
然后我的导航按预期工作。