0

我刚刚注意到我的菜单有问题。我正在使用 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 中也有空行。可能是因为这一行添加了一个空项,但我不知道它是从哪里来的。

4

2 回答 2

1

您的配置 menuNotLogged 中是否有没有标签的元素?为什么你使用部分来呈现你的菜单而不是喜欢:echo $this->navigation()->menu(Zend_Registry::get('main'))->render();?您能否发布确切的输出 HTML 问题是我无法真正获得您发布的图片..

于 2011-11-18T10:00:05.897 回答
0

在生成的输出中,您遇到了一些错误:

您打开 4 个li元素,但只有 1 个是关闭的。那么不需要的空间可能来自损坏的html标记?

于 2011-11-15T15:22:12.947 回答