2009-12-28 1 views
8

Я использую XML-файл навигации в сочетании с моим приложением Zend Framework MVC.Пользовательский рендеринг Zend_Navigation

Меню верхнего уровня отображается в верхней части моего макета. Код для производства выглядит следующим образом:

$this->navigation()->menu()->renderMenu(null,array('maxDepth' => 0)); 

Это будет автоматически оказывать неупорядоченный список ссылок, которые я стилизованная в мое верхнее меню. Теперь я хочу отобразить подменю (для рендеринга активного дерева контейнеров), используя все преимущества встроенного Zend_Navigation (MVC и ACL-интеграцию), но с пользовательской разметкой. Я хотел бы сделать это, вставив это:

$this->navigation()->menu()->renderSubMenu(); 

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

Есть ли простой способ (или сложный, если нужно); настроить подменю?

ответ

11

Заканчивать этот ответ мои: Getting Zend_Navigation menu to work with jQuery's Fisheye

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

7

Typeoneerror поставил меня на правильный путь, вот код, который я закончил с использованием:

В layout.phtml:

<?= $this->navigation()->menu()->renderMenu(null,array('maxDepth' => 0)); ?> 
<? $this->navigation()->menu()->setPartial('sidemenu.phtml'); ?> 
<?= $this->navigation()->menu()->render(); ?> 

В sidemenu.phtml:

$this->navigation()->findByResource(
    Zend_Controller_Front::getInstance()->getRequest()->module . 
    Zend_Controller_Front::getInstance()->getRequest()->controller 
); 

foreach ($this->container as $page) { 
    if ($page->isVisible() && $this->navigation()->accept($page)) { 
     if ($page->isActive()) { 
      echo $page->getLabel(); 
      $subcontainer = $page->getPages(); 
      foreach ($subcontainer as $subpage) { 
       echo $subpage->getLabel(); 
      } 
     } 
    } 
} 

Работал как прелесть, оставляя это как ответ для кого-то другого, чтобы найти.