Хлебные крошки (breadcrumbs)

d1gi

Новичок
где лучше собирать данные для сабжа?

теретически ури может выглядеть так:
http://loc/site/news/first.html

при этом сабж может быть таким:

Главная » Новости » Первая
а может быть и таким, даже при том же самом запросе:

Главная » Новости » 2012 » Январь » Первая
т.е. как мне кажется наиболее правильным местом где будут собираться ХК, это роутер, именно он раpбирая шаблоны УРИ может сгенерить данные для ХК.

но допустим пускай будет так :) а после того как роутер отработал, куда эти данные лучше заснуть? хранить в каком-то общедоступном пространстве? но как его лучше назвать? ;) мне пока приходит на ум что-то типа:
PHP:
 $this->Html->addBreadCrumb(array(
       'uri' => 'relative/path/to/,
       'title' => 'Заголовок',
       'descr' => 'Описание',
       ));
а если короче, то:
PHP:
$this->Html->addBreadCrumb('relative/path/to/, 'Заголовок', 'Описание');
где $this->Html это просто объект доступный из контроллера и допустим роутер или экшен туда всё сложит, а вызывающий контроллер должен будет забрать все данные и прилепить их в общую картину...

или роутер вообще не должен генерить никаких данных, кроме как инструкции по
запуску классов и экшенов?
 

Jon

Новичок
Не очень понял проблемы, вызвал переменую в шаблоне и все.
 

d1gi

Новичок
суть в том, что сабж у меня является обычным модулем, а модули работают по принципу: сначала все собрали данные для отображдения, а затем отобразили, так вот модуль сабжа может быть отработан ДО дого как другие модули наполнят хлебные крошки...

сейчас да, сделал вывод как "виджет" т.е. прямо из шаблона вызываем объект через который можем получить текущее состояние ХК и сразу их выводим т.о. сабж всегда актуальный.
 

artsus4

Новичок
По моему, если рассматривать данный путь:
Главная » Новости » Первая
То последний узел должен отдавать контроллер, предварительно опросив модель, если нужно. То есть, в зависимости от настроек он должен уметь возвращать то ли такой путь:
то ли такой:
2012 » Январь » Первая
Очевидно, что первые два узла ("Главная » Новости") известны до вызова контроллера. Значит этот путь может отдаваться, к примеру, классом управления меню. Но и в этом случае, объект текущего пункта меню можно просто передать контроллеру, чтобы он был в состоянии сгенерировать полный путь.
 

alekciy

Новичок
суть в том, что сабж у меня является обычным модулем, а модули работают по принципу: сначала все собрали данные для отображдения, а затем отобразили, так вот модуль сабжа может быть отработан ДО дого как другие модули наполнят хлебные крошки...
Значит, архитектурно не была заложена возможность управления последовательностью вызовы модулей? Я так понимаю в итоге нечто подобное и получилось, только уровней (весов) всего два: остальные-модули и модуль-крошек.

А вариант сначала вызвать все модули, сгенерировать все данные и лишь только после этого накладывать полученные данные на шаблоны? Тогда не принципиально, в какой последовательности вызывать модули (конечно при условии затирании данных).
 
Сверху