Bueno, pues adaptado queda.
No lo he probado a fondo, así que si lo prueban y da algún error, agradezco que lo comenten.
Compatible con la versión:
ZendFramework 2.0.2
Twitter Bootstrap 2.1.1
Nota: El menú desplegable no admite aún un submenú desplegable. Para la próxima que lo revise intento actualizar eso.
En el resto del post viene como adaptar el View Helper
NavigationMenu
PD.: Lo pongo en varias partes por la limitación de caracteres.
NavigationMenu.php (Estructura)
Código PHP:
namespace ApplicationViewHelper;
use ZendViewHelperNavigationMenu;
use RecursiveIteratorIterator;
use ZendNavigationAbstractContainer;
use ZendNavigationPageAbstractPage;
/**
* Agrega menús desplegables y/o iconos en los distintos menús del
* View Helper Menu de Navigation
*
* Añade las propiedades
* liclass
* iclass
*
* Modifica la clase active
* Por defecto en Zend
* <li>
* <a class="active">link</a>
* </li>
*
* Con el View Helper NavigationMenu
* <li class="active">
* <a>link</a>
* </li>
*
* Opciones personalizadas:
* Para iniciar un menú desplegable:
* 'label' => 'Dropdown',
* 'liclass' => 'dropdown',
* 'iclass' => 'icon-name', //si se quiere poner un icono junto al enlace
* 'class' => 'dropdown-toggle',
* 'uri' => '/', //sin url
* 'pages' => array(array('pages'))
*
* Para añadir un separador vertical en el menú del header
* array(
* 'label' => '',
* 'liclass' => 'divider-vertical',
* 'uri' => '',
* ),
*
* Para añadir un separador horizontal en un menu desplegable del menú del header
* Para añadir un separador horizontal en un menu vertical
* array(
* 'label' => '',
* 'liclass' => 'divider',
* 'uri' => '',
* ),
*
* @author ORD, alias Uncontroled Duck
* @version bootstrap twitter 2.1.1
* @version ZendFramework 2.0.3
*/
class NavigationMenu extends Menu
{
/**
* Returns an HTML string containing an 'a' element for the given page if
* the page's href is not empty, and a 'span' element if it is empty
*
* Overrides {@link AbstractHelper::htmlify()}.
*
* @param AbstractPage $page page to generate HTML for
* @param bool $escapeLabel Whether or not to escape the label
* @return string HTML string for the given page
*/
public function htmlify(AbstractPage $page, $escapeLabel = true)
{
//...
}
/**
* Renders a normal menu (called from {@link renderMenu()})
*
* @param AbstractContainer $container container to render
* @param string $ulClass CSS class for first UL
* @param string $indent initial indentation
* @param int|null $minDepth minimum depth
* @param int|null $maxDepth maximum depth
* @param bool $onlyActive render only active branch?
* @param bool $escapeLabels Whether or not to escape the labels
* @return string
*/
protected function renderNormalMenu(AbstractContainer $container, $ulClass, $indent, $minDepth, $maxDepth, $onlyActive, $escapeLabels)
{
//...
}
}