2011-01-30 2 views
1

С Zend_Navigation, я могу сделать что-то вродеКак создать «Dynamic» Breadcrumbs в Zend навигации

Home > Projects > Collaborators 

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

Home > Project name > Collaborator name 

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

ответ

4

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

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

+0

+1. Я думаю, что это самый простой способ сделать это. Другим способом было бы прямо играть с вашим навигационным контейнером, но сложнее то, что предлагает Эшли и ненужное в этой ситуации. – Marcin

2

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

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

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

Это действительно помогло создать динамическую карту сайта для одного из моих сайтов. Спасибо. –

1

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

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

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

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

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

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

Being $ имя, имя сотрудника.

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

Greetings,

Смежные вопросы