2009-12-28 7 views
8

Estoy utilizando un archivo XML de navegación junto con mi aplicación Zend Framework MVC.Representación personalizada de Zend_Navigation

Un menú de nivel superior se representa en la parte superior de mi diseño. El código para producir se ve así:

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

Esto hará automáticamente una lista desordenada de enlaces que he labrados en mi menú superior. Ahora, quiero renderizar el submenú (para representar el árbol de contenedor activo) aprovechando todo el valor Zend_Navigation incorporado (integración MVC y ACL) pero con marcado personalizado. Me gustaría hacer esto mediante la inserción de esto:

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

De hecho, tengo un conjunto muy específico de marcado que tengo que hacer esto con. Es tan drásticamente diferente que no creo que pueda darle estilo a una lista desordenada para acomodar mi presentación deseada.

¿Existe una manera simple (o complicada si es necesario) de personalizar un submenú?

Respuesta

7

Typeoneerror me puso en el camino correcto, aquí está el código que terminé usando:

En layout.phtml:

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

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

Trabajado como un amuleto, dejando esto como una respuesta para que alguien más lo encuentre.

Cuestiones relacionadas