Как создать «динамические» хлебные крошки в Zend Navigation - PullRequest
1 голос
/ 30 января 2011

С Zend_Navigation я могу сделать что-то вроде

Home > Projects > Collaborators

но что, если я хочу что-то более полезное

Home > Project name > Collaborator name

Как я могу достичь этого? Это хорошая идея? Возможно, будут проблемы с производительностью? Потому что он должен запросить иерархию? Но что бы это ни было, как мне этого достичь?

Ответы [ 3 ]

4 голосов
/ 30 января 2011

Пример # 34 показывает, как использовать частичное представление для хлебных крошек.Я бы сделал foreach на $this->pages и отрегулировал бы там, где нужно

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

2 голосов
/ 30 января 2011

Самый простой способ - визуализировать хлебные крошки, а затем добавить к этой строке имя Collaborator.

Это работает, если вам не нужно это в навигации или карте сайта. В противном случае его необходимо добавить в контейнер вручную.

$this->navigation()
  ->getContainer()
  ->findOneByLabel('Colaborators')
  ->addPage(array('label'=>'name', 'uri'=>'/name'));
1 голос
/ 09 июля 2015

Может быть, немного поздно, но так как я боролся с этим, я публикую это на всякий случай, если это может кому-нибудь помочь.

Если вы просто хотите изменить фактический ярлыктекущая страница, самый простой способ сделать это следующим образом:

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

findOneByRoute будет работать очаровательно, если вы используете Zend_Routes, если вы этого не сделаете, вы можете изменить его с помощью findOneByX , поскольку X является любым свойством страницы.

Отвечая на вопрос OP, в этом случае было бы легко сделать:

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

Будучи $ name, имя сотрудника.

Надеюсь, это поможет тем людям, которые все еще используют ZF1.

Привет,

...