Zend_Navigation переписать с массивом?

В настоящее время я использую zend_navigation через файл XML.

Однако мне нужно переписать предыдущий элемент крошки, чтобы он был его динамическим родителем в контроллере.

Это возможно? Мне кажется, что zend_navigation довольно статичен, а документация по zend истекает.

Спасибо


Я положил:

    public function addAction() {

        $this->view->navigation()->addPage(array(
            'type' => 'uri',
            'label' => 'New page')
        );

в моем контроллере, но никакая крошка не появляется для этой страницы.

Есть идеи? $this->navigation() бросил

Method "navigation" does not exist and was not trapped in __call() 

Также следует отметить, что мой crumbBar находится в моем макете, а не в отдельных видах.

2 ответа

Решение

Да, вы можете использовать массив.

Что вы должны сделать, так это создать свой массив и затем ввести его в фабрику Zend_Navigation, чтобы создать свои страницы для вас.

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

Создав свой навигационный контейнер, вы можете просто добавить в него новые страницы.

подобно

$this->navigation()->addPage(array(
   'type' => 'uri',
   'label' => 'New page'));

Но вы также можете использовать addPages(). Вот что я делаю.

Я думаю, вам следует подождать, пока документация загрузится для вас, а затем посмотреть на это. Это действительно легко на самом деле.

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

Кроме того, проверьте #zftalk на freenode. Там много помощи там.

    // Disable Layout
    $this->view->layout()->disableLayout();     
    $this->_helper->viewRenderer->setNoRender(true);

    // Output XML than HTML
    $this->getResponse()->setHeader('Content-Type', 'text/xml; charset=utf-8');


    $container = new Zend_Navigation();

    // Replace this section with real dynamic data. 
    $pages = array(
        array(
            'label'  => 'Save',
            'action' => 'save',
        ),
        array(
            'label'  => 'Delete',
            'action' => 'delete',
        ),
    );

    // Add pages
    $container->addPages($pages);
    $this->view->navigation($container);

    // Output the data.
    echo $this->view->navigation()->sitemap();

Дополнительно использует Zend Router для перенаправления site.com/sitemap.xml на этот контроллер / функцию.

Спасибо за многих разработчиков, которые помогают мне добраться сюда.

Другие вопросы по тегам