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