Динамически добавлять страницы в контейнер Zend_Navigation во время выполнения
В продолжение на мой последний пост про Zend_Navigation, направлять запросы для sitemap.xml обычаю контроллер / действие , этот пост о dymnamically добавления страницы в контейнер Zend_Navigation во время выполнения / выполнение сценариев.
Его все хорошо указанием страниц в INI или XML- файл, но в какой-то момент вам придется изменения страниц на своем сайте, что вы хотите как часть меню, карта сайта, или должны быть включены в ваш пройденного пути. Поэтому то, что нам нужно сделать, это добавить страниц в наш Zend_Navigation контейнер во время выполнения. Примеры для этого было бы в добавление новостей, блогов или страниц комментариев, и т.д.
В этом примере я собираюсь добавить новость сообщения на мой постоянна INI конфигурации. Чтобы получить мои новости конфигураций сообщению странице я использовал класс, который возвращает массив, в следующем формате:
$ PagesToAdd = Array ( 0 => массив ( "Ярлык" Fake => 'новость # 5 ...', 'Модуль' = 'WWW'>, 'Маршрут' => 'WWW-индекс ", "Действие" "Вид" => "Диспетчера" Новости "=> "Params '=> Array ( 'ID' => '5-Fake-новости-этажное - 5 ') ), 1 => массив (/ * Более подробную страницы * /), );
Как можно заметить, что функция вернулась массив, в котором содержатся массивы, которые составляют конфигурации массивов для Zend_Navigation_Page_Mvc. Поэтому, цикл по массиву новые страницы Zend_Navigation может быть создан из конфигурации массива. Следующее, что нужно делать, как часть цикла, чтобы добавить страниц в правильное положение (в качестве альтернативы страницы могут быть добавлены в большом помощью -> addPages () метод).
Для этого найдите страницу, которую вы хотите добавить к югу-страниц и просто добавить страниц. В этом случае я использовал следующий код, чтобы найти мою страницу:
$ Контейнер-> findOneBy ("ярлык", "Последние новости") -> AddPage ($ странице); Мое общее инициализации навигация в бутстрапа поэтому выглядит следующим образом:
/ ** * Используется для обработки верхнего уровня навигации * * @ Возвращения Zend_Navigation * / охраняемых _initNavigation функции () { $ Этом-> загрузки ('макет'); $ = $ Макет этого-> GetResource ("макет"); $ = $ Зрения топологии> GetView (); $ Config = новый Zend_Config_Ini ( APPLICATION_PATH. '/ Конфиги / navigation.ini, APPLICATION_ENV); $ Контейнер = новый Zend_Navigation ($ конфигурации-> по умолчанию); / / Теперь добавляем последние 25 сообщает $ = Новости новые новости (); $ = $ Страниц новостей> getNavigationEntries (); Еогеасп ($ страниц, $ страницы) { $ Страница = новый Zend_Navigation_Page_Mvc ($ странице); $ Контейнер-> findOneBy ("ярлык", "Последние новости") -> AddPage ($ странице); } $ Вид-> навигация ($ контейнера); }
На то, что должна быть добавлена некоторая форма кэширования (с помощью Zend_Cache предположительно;)) в противном случае это будет довольно дорого с каждой загрузке страницы.


















































Это именно то, что я искал - спасибо за действительно яркий пример. Cheers. G