Wie erweitere ich den Zend Navigation Menu View Helper?
Ich muss die Ausgabe von ändernZend_View_Helper_Navigation_Menu
. Ich habe die beiden Funktionen gefunden, die ich ändern muss, und weiß, wie ich die gewünschten Änderungen vornehme. Ich weiß nicht, wie ich das Navigationsobjekt dazu bringen soll, meinen Ansichtshelfer anstelle des Zend-Objekts zu verwenden.
Code-Snippet für meine Klassenerweiterung:
// file /library/My/View/Helper/Navigation/Menu.php
class My_View_Helper_Navigation_Menu extends Zend_View_Helper_Navigation_Menu
{
protected function _renderDeepestMenu(Zend_Navigation_Container $container,
$ulClass,
$indent,
$minDepth,
$maxDepth)
{
// modified code here
}
protected function _renderMenu(Zend_Navigation_Container $container,
$ulClass,
$indent,
$minDepth,
$maxDepth,
$onlyActive)
{
// modified code here
}
}
Bearbeitungen zur Verdeutlichung
Ich möchte die Klasse der<li>
Elemente und entfernen Sie dieEOL
und Einrückung. Für das Menüansichtskript gibt es keine Optionen, weshalb ich es erweitern muss.
Initialisieren des Navigationsobjekts in meinem Bootstrap:
$navTable = new Default_Model_Site_DbTable_Navigation();
$view = $this->getResource('view');
$view->navigation(new Zend_Navigation($navTable->getNavigation()));
Das Menü in meinem Layout rendern:
echo $this->navigation()->menu();
Lösung
Ich habe es zum Laufen gebracht, indem ich Dinge wie folgt umbenannt habe, aber ich bin mir nicht sicher, warum ich die nicht überladen / überschreiben kann_Menu
Klasse undmenu()
Funktion.
My_View_Helper_Navigation_MyMenu
Ergänzen Sie diemyMenu
Funktion der Klasse (return parent::menu($container);
)Anrufecho $this->navigation()->myMenu();
im LayoutKlasse Drahtmodell:
// file /library/My/View/Helper/Navigation/MyMenu.php
class My_View_Helper_Navigation_MyMenu extends Zend_View_Helper_Navigation_Menu
{
public function myMenu(Zend_Navigation_Container $container = null)
{
return parent::menu($container);
}
protected function _renderDeepestMenu(Zend_Navigation_Container $container,
$ulClass,
$indent,
$minDepth,
$maxDepth)
{
// modified code here
}
protected function _renderMenu(Zend_Navigation_Container $container,
$ulClass,
$indent,
$minDepth,
$maxDepth,
$onlyActive)
{
// modified code here
}
}