Как мне расширить Zend Navigation Menu View Helper?
Мне нужно изменить выводZend_View_Helper_Navigation_Menu
, Я нашел две функции, которые мне нужно изменить, и я знаю, как внести необходимые изменения. Чего я не знаю, так это как заставить объект Navigation использовать мой помощник вида вместо Zend.
Фрагмент кода, представляющий мое расширение класса:
// 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
}
}
Правки для уточнения
Я хочу изменить класс<li>
элементы и удалитьEOL
и отступ. Для этого нет сценария просмотра меню, поэтому мне придется его расширять.
Инициализация объекта навигации в моем Bootstrap:
$navTable = new Default_Model_Site_DbTable_Navigation();
$view = $this->getResource('view');
$view->navigation(new Zend_Navigation($navTable->getNavigation()));
Визуализация меню в моем макете:
echo $this->navigation()->menu();
Решение
Я получил это, переименовав вещи следующим образом, но я не понимаю, почему я не могу перегрузить / перезаписать_Menu
класс иmenu()
функция.
My_View_Helper_Navigation_MyMenu
ДобавитьmyMenu
функция к классу (return parent::menu($container);
)Вызовecho $this->navigation()->myMenu();
в макетеКласс каркаса:
// 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
}
}