如何在Zend导航中创建“动态”面包屑

时间:2011-01-30 01:44:05

标签: zend-framework zend-navigation

使用Zend_Navigation,我可以做类似

的事情
Home > Projects > Collaborators

但如果我想要更有用的东西

,该怎么办?
Home > Project name > Collaborator name

我怎样才能实现这一目标?这是个好主意吗?可能会出现性能问题?是不是需要查询层次结构?但无论如何,我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

示例#34显示了如何使用视图partial来获取面包屑。我会在foreach上执行$this->pages并根据需要进行调整

http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.breadcrumbs

答案 1 :(得分:2)

最简单的方法是渲染面包屑,然后在此字符串后附加协作者名称。

除非您在导航或站点地图中不需要它,否则此方法有效。否则,您必须手动将其添加到容器

$this->navigation()
  ->getContainer()
  ->findOneByLabel('Colaborators')
  ->addPage(array('label'=>'name', 'uri'=>'/name'));

答案 2 :(得分:1)

也许这有点晚了,但是因为我一直在努力解决这个问题,所以我发布它以防它可以帮助任何人。

如果您只想更改当前页面的实际标签,最简单的方法就是这样:

$this->view->navigation()->findOneByRoute(
                              Zend_Controller_Front::getInstance()
                                                     ->getRouter()
                                                     ->getCurrentRouteName()
                           )
                        ->setLabel($label);

如果你使用Zend_Routes, findOneByRoute 会很有效,如果不使用,你可以通过 findOneByX 来改变它,因为X是页面的任何属性。< / p>

回答OP的问题,在这种情况下,很容易做到:

$this->view->navigation()->findOneByLabel('Collaborators')
                         ->setLabel('Collaborator'. $name);

成为$ name,是协作者的名字。

我希望这对那些仍在使用ZF1的人有所帮助。

问候,