Мне нужно изменить вывод Zend_View_Helper_Navigation_Menu
. Я нашел две функции, которые мне нужно изменить, и я знаю, как внести необходимые изменения. Чего я не знаю, так это как заставить объект навигации использовать мой помощник вида вместо 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
}
}