我正在使用.ini文件来渲染我的菜单。
自举
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/menu.ini', 'nav');
$nav = new Zend_Navigation($config);
$view->navigation($nav);
layout.phtml
<?php echo $this->navigation()->menu()->setMaxDepth(3) ?>
我的目标:
<ul class="navigation" id="navigation">
<li>
<a id="menu-1" href="/">Home</a>
</li>
</ul>
如何为第一个<ul>
出现而不是class =“navigation”设置id =“navigation”?
现在我只有<ul class="navigation">
,我希望<ul id="navigation">
或<ul class="navigation" id="navigation">
答案 0 :(得分:1)
您需要在代码库中设置自定义视图助手,而不是在Zend _。
下也许像GZ_View_Helper_Navigation_Menu2
然后根据你想如何配置这个新的视图辅助路径的添加,在你的bootstraps initView中这样的东西:
$view->addHelperPath('GZ/View/Helper/', 'GZ_View_Helper');
或者,如果使用应用程序和资源,您也可以通过ini设置它:
resources.view.helperPath.GZ_View_Helper = "GZ/View/Helper"
您的lib GZ当然需要使用PHP的include path。
渲染时,您可以将调用更改为:
<?= $this->navigation()->menu2()->setMaxDepth(3) ?>
虽然我认为您也可以将默认视图帮助程序(目前无法在文档中找到)分配给导航并只需调用
<?= $this->navigation ?>
答案 1 :(得分:0)
您可以使用jQuery执行此操作:
$('document').load(function(){
$("body > ul:first-child").attr('id', 'navigation');
})
修改强>
阅读完您的评论后,我注意到您正在使用Mootols库,因此您可以执行jQuery
等效,如下所示:
window.addEvent('domready', function() {
var myMenu = new MenuMatic({ orientation:'vertical' });
myMenu.getElement('ul').set('id', 'navigation');
});
答案 2 :(得分:0)
我自己一直在想这个方法。我经常在Zend Framework项目中创建多个导航对象。
相反,我会提交一个不同的答案。在您的视图中,将您的调用封闭在HTML5 nav 元素内的导航输出中。这使它在语义上更加清晰,并允许您轻松地将自己的ID添加到每个部分。所以,试试这个:
<nav id="navigation"><?php echo $this->navigation()->menu()->setMaxDepth(3) ?></nav>
有趣的是 - 如果页面上只有1个导航元素,那么您甚至不需要ID。您可以使用css中的nav元素来定位它...例如,要使导航中的所有ul都具有零边距,您可以在css中执行此操作:
nav ul { margin: 0px }
答案 3 :(得分:0)
在ZF 1.12中(不知道究竟是哪个版本)有一种方法:
$这 - &GT;导航() - &GT;菜单() - &GT; setUlId( '导航') - &GT; setMaxDepth(0);