2009-12-28 19 views
8

Zend Framework MVC uygulamam ile birlikte bir gezinti XML dosyası kullanıyorum.Özel oluşturma Zend_Navigation

Yerleşimimin üst kısmında en üst düzey bir menü oluşturulur. Kod bu gibi görünüyor üretmek için:

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

Bu otomatik benim üst menü içine tarz bağlantıların sıralanmamış bir liste verecek. Şimdi, tüm yerleşik Zend_Navigation iyiliğinden (MVC ve ACL entegrasyonu) faydalanan alt menüyü (aktif konteyner ağacını oluşturmak için), ancak özel işaretlemeyle oluşturmak istiyorum. Bunu ekleyerek bu yapacağını:

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

Aslında, ben bu hale gereken biçimleme çok özel bir set var. Çok farklı bir şekilde farklıdır, istediğim sunumu benimsemek için sıralanmamış bir listeyi çizebileceğimi düşünmüyorum.

Bir alt menüyü özelleştirmek için basit bir yol var mı (veya gerekiyorsa karmaşık mı)?

cevap

11

Kontrol dışarı benim bu cevabı: Getting Zend_Navigation menu to work with jQuery's Fisheye

özetlenebilir, sayfalar arasında gezinme ve döngü için bir görünüm oluşturma ve özel biçimlendirmesi oluşturmak için sayfa yöntemleri kullanın. Bildiğim kadarıyla, şu anda Navigasyon için dekoratör benzeri destek yok.

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

sidemenu.phtml olarak: layout.phtml olarak

:

$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(); 
      } 
     } 
    } 
} 

amele

7

Typeoneerror doğru yolda beni koy, işte kullanarak sona erdi kodudur Bir çekicilik gibi, bunu başkasının bulması için bir cevap olarak bırakıyor.