Zend导航菜单集类出现在两个调用中


Zend navigation menu set class appears across both calls

我已经设置了zend_navigation来处理我的菜单项阵列,并且可以如下调用我的菜单:

echo $this->navigation()->menu();

然而,我在一个页面上有一个菜单和一个菜单编辑器,所以有两个调用,以便生成另一个可以根据需要重新排序的ul。

当我尝试使用将类添加到"可排序"菜单时,我的问题就来了

->setUlClass('sortable')

它按预期添加了类,但添加到创建菜单的两个调用中。呼叫如下:

navigation.phtml:

echo $this->navigation()->menu();

index.phtml

echo $this->navigation()->menu()->setUlClass('sortable');

但它们都继承了类"sortable"。

有人知道这可能的原因吗,因为我认为一个新的调用会创建一个导航菜单的新实例来渲染。。?

提前感谢!

这很简单,正如本章博客中所描述的那样。

要做的事情是将第二个菜单完全渲染为render…例如,不使用默认的menu()方法来渲染它。通过这种方式,您可以告诉Zend_Navigation元素"吐出"结果,而不是将其视为自己的集合属性——如果这有意义的话。

上面链接的关键部分是这个位:

$options = array('ulClass' => 'submenu');
echo($this->navigation()->menu()->renderMenu($this->miscnavigation, $options));

在你的例子中,可以修改为:

echo($this->navigation()->menu()->renderMenu($this->navigation()->getContainer(), array('ulClass' => 'submenu')));

可以在您的视图中使用。

试着这样回应它们:

echo $this->navigation()->menu()->renderMenu();
echo $this->navigation()->menu()->renderMenu(null, array('ulClass' => 'sortable'));