我刚刚注意到我的菜单有问题。我正在使用 Zend Framework 开发一个 php 应用程序。看起来我的菜单中插入了一个空文本行,我不明白为什么。例如 ...
如您所见,我手动添加的元素和使用 menu.phtml 生成的元素之间有一个空白区域。这是我的代码...
首先,因为我有 3 个不同的菜单,所以我将它们保存在 Zend_Register 中,在我的引导程序中,但我只会向您展示我的匿名菜单的代码。
protected function _initNavigation()
{
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();
//Init du menu anonyme
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'menuNotLogged');
$container = new Zend_Navigation($config);
Zend_Registry::set('main',$container);
$view->navigation($container);}
然后,在我的布局中,我显示我的菜单......
<div id="navigation">
<ul id="primary-links">
<li id="overview"><a href="#">Overview test</a></li>
<li><a href="#">Manual test</a></li>
<?php
$partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->render(Zend_Registry::get('main'));
?>
</ul>
</div>
现在我的 menu.phtml ...
foreach ($this->container as $page) {
if ($page->isVisible()) {
if ($page->isActive(true)) {
//... not active so it doesn't enter here
} else {
echo '<li>'.$this->navigation()->menu()->htmlify($page). '</li>' ;
}
}
}
我试图在 Firebug(FF) 和 Developer Tools(IE8) 中调试我的菜单,它在菜单中显示这样的空文本(第一张图片是 IE,第二张是 Firefox)
有一个空项目,我看不到它来自哪里!我注意到它是因为我需要更改我的应用程序的模板,并且使用旧菜单它做了同样的事情,但我没有看到它,现在它真的......可见。
当我渲染我的菜单时,这似乎真的是一个问题,因为如果我手动添加元素,就没有问题。查看我的代码,您是否知道可能导致这种情况的原因?有人遇到过同样的问题吗?您需要我的代码的其他部分或其他详细信息吗?
已经谢谢了!
更新
这是我的 navigation.xml 中的 menuNotLogged
<menuNotLogged>
<home>
<label>Home</label>
<uri>/index</uri>
</home>
<login>
<label>Login</label>
<uri>/index/login</uri>
</login>
</menuNotLogged>
这是所要求的html输出
<!-- NAVIGATION_BEGIN -->
<div id="ibm-navigation">
<ul id="ibm-primary-links">
<li id="ibm-overview"><a href="http://w3">Overview test</a></li>
<li><a href="http://w3">Manual test</a></li>
<li><a href="/index">Accueil</a></li><li><a href="/index/login">Authentification</a></li>
</ul></div>
Zend Studio 的调试输出视图和 Firebug 中也有空行。可能是因为这一行添加了一个空项,但我不知道它是从哪里来的。