如何将类添加到活动导航链接?如果链接指向URI / index / index并且请求URI也是/ index / index,我希望链接具有类,例如:
<li class="active">
<a href="/index/index">Index</a>
</li>
这就是我在bootstrap中初始化导航的方法:
protected function _initNavigation()
{
$navigation = new Zend_Navigation($this->getOption('navigation'));
$this->view->navigation($navigation);
}
答案 0 :(得分:2)
确定,
我通过编写控制器插件解决了这个问题:
<?php
class My_Controller_Plugin_PrepareNavigation extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$viewRenderer = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer');
$viewRenderer->initView();
$view = $viewRenderer->view;
$container = new Zend_Navigation(Zend_Registry::get('configuration')->navigation);
foreach ($container->getPages() as $page) {
$uri = $page->getHref();
if ($uri === $request->getRequestUri()) {
$page->setClass('active');
}
}
$view->navigation($container);
}
}
答案 1 :(得分:0)
这是使用Application使用zend框架在layout()中创建navigation()的方法。 好吧,至少有一种方法。
中设置了CSS类将它放入Bootstrap.php文件:
protected function _initNavigation()
{
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();
include APPLICATION_PATH . '/layouts/scripts/menu.phtml';
$view->navigation($container);
}
这允许您在文件menu.phtml中为菜单创建一个数组,这样您仍然可以在当前链接上维护活动类。出于某些奇怪的原因,如果使用此方法,则必须在数组中包含controller属性以获取当前链接上的CSS活动类。
将这样的内容放入/layouts/scripts/menu.phtml文件中:
$container = new Zend_Navigation(array(
array(
'label' => 'HOME',
'id' => 'tasks',
'uri'=>'/',
'controller' => 'Index'
),
array(
'label' => 'Contact',
'uri' => 'contact',
'controller' => 'Contact'
),
.... more code here ...
将其放入layout.phtml文件中:
$options = array('ulClass' => 'menu');