Где я должен заполнить свой контейнер Zend_Navigation? - PullRequest
5 голосов
/ 20 апреля 2011

Где в моем приложении я должен определить страницы верхнего и нижнего уровня для использования Zend Navigation?Мой помощник вида панели навигации верхнего уровня будет отделен от помощника вида, который генерирует суб-навигацию.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

Более простой способ - определить всю вашу навигацию в одном месте.Он поддерживает неограниченное количество вложенных (дочерних) страниц. Это означает, что в качестве базового уровня можно использовать главное меню, а затем подстраницы под каждой главной страницей для своих подменю.Используя помощники просмотра, вы можете легко выводить только меню подстраниц для текущей активной страницы.

Таким образом, вся навигация сохраняется в одном месте для удобства сопровождения в будущем.

Например,Я определяю свою навигацию по всему сайту в файле application.ini с помощью Application Resource , а затем в своих скриптах просмотра использую Помощники по навигации для форматирования моих меню.

Это небольшая выдержка из моего конфига навигации по файлу application.ini в проекте, над которым я работаю:

resources.navigation.pages.exhibits.label                   = "Exhibits"
resources.navigation.pages.exhibits.controller              = "exhibits"
resources.navigation.pages.exhibits.action                  = "index"
resources.navigation.pages.exhibits.pages.index.label       = "Search Exhibitors"
resources.navigation.pages.exhibits.pages.index.controller  = exhibits
resources.navigation.pages.exhibits.pages.index.action      = index
resources.navigation.pages.exhibits.pages.search.label      = "Search Exhibits"
resources.navigation.pages.exhibits.pages.search.controller = exhibits
resources.navigation.pages.exhibits.pages.search.action     = "search"
resources.navigation.pages.exhibits.pages.new.label         = "New Exhibitor"
resources.navigation.pages.exhibits.pages.new.controller    = exhibits
resources.navigation.pages.exhibits.pages.new.action        = "new"
resources.navigation.pages.exhibits.pages.import.label      = "Import Exhibits"
resources.navigation.pages.exhibits.pages.import.controller = exhibits
resources.navigation.pages.exhibits.pages.import.action     = "import"

resources.navigation.pages.sales.label                      = "Sales"
resources.navigation.pages.sales.controller                 = "sales"
resources.navigation.pages.sales.action                     = index
resources.navigation.pages.sales.pages.index.label          = "Review/Search"
resources.navigation.pages.sales.pages.index.controller     = sales
resources.navigation.pages.sales.pages.index.action         = index
resources.navigation.pages.sales.pages.edit.label           = Add/Edit Sales
resources.navigation.pages.sales.pages.edit.controller      = sales
resources.navigation.pages.sales.pages.edit.action          = edit
resources.navigation.pages.sales.pages.flags.label          = Flags/Problems
resources.navigation.pages.sales.pages.flags.controller     = sales
resources.navigation.pages.sales.pages.flags.action         = flags

А внутри моего файла layout.phtml:

<div id='mainmenu'>
  <?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
</div> <!-- #mainmenu -->
<div id='submenu'>
  <?php echo $this->navigation()->menu()->setOnlyActiveBranch(true)
                                        ->setMinDepth(1)
                                        ->setMaxDepth(1); ?>
</div> <!-- #submenu -->

Поэтому, когда пользователь переходит на страницу «Экспонаты», он видит только дочерние элементы этой страницы и то же самое со страницей «Продажи».Довольно просто и очень эффективно.

3 голосов
/ 20 апреля 2011

Я обычно делаю это в плагине контроллера.Здесь я могу создать навигацию на основе текущего маршрута или параметров запроса, а затем легко перейти к представлению / макету из ресурса приложения и переключиться с другим, когда навигация будет изменена.

...