我已经设置了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'));