Как украсить Zend навигационное меню? - PullRequest
0 голосов
/ 24 февраля 2012

у меня есть это меню:

 $menu['talent'] = array(
                 array('id'     => 'welcome', 
                       'label'  => 'My Profile', 
                       'uri'    => '/profile/,
                       'class'  => 'navlink'
                       )
                 ),
                 array('id' => 'welcome', 
                       'label' => 'My Profile', 
                       'class'  => 'navlink',
                       'uri' => '/profile/
                 ),             
    );

это будет выглядеть примерно так:

<ul>
    <li><a href="" class="navlink">My Profile</a></li>
    <li><a href="" class="navlink">My Profile</a></li>
<ul>

как я могу изменить ul на div, а также li на что-то еще?

какие-нибудь иды?

Спасибо

1 Ответ

1 голос
/ 24 февраля 2012

Что ж, для этого я бы использовал один из этих двух методов:

Использование View Helper и меню перегрузки ()

Чтобы перегрузить Zend_View_Helper_Navigation_Menu, вы могли бы написать вамсобственный помощник, зарегистрируйте его и сделайте так, чтобы он расширялся Zend_View_Helper_Navigation_Menu.В вашем помощнике вы можете перегрузить нужный метод, например _renderMenu() и , чтобы он отображал <p> вместо <li>, например.В вашем View Helper вам нужно будет вернуть parent :: menu () или что-то вроде этого.

Наконец, вы должны зарегистрировать этот новый View Helper, используя:

$view->addHelperPath(APPLICATION_ROOT . '/library/My/View/Helper/Navigation', 'My_View_Helper_');

Использованиечастичный сценарий

Этот мне кажется немного длиннее, но попробовать стоит.По сути, вам нужно установить частичный сценарий для вашей навигации, используя метод setPartial(), и ваше меню будет отображаться через этот частичный элемент.

<?= $this->navigation()->menu()->setMaxDepth(2)->setPartial('partials/_nav.phtml')->render() . PHP_EOL; ?>

Впоследствии, в вашем _nav.phtml вы можете отобразить ваше меню какпожелает.Из этой части вы можете получить доступ к переменным меню, используя $this->container.Затем вы можете перебирать каждую страницу вашего контейнера и отображать, что вы хотите.

Я знаю, что все это кажется довольно сложным для такой простой задачи, но, к сожалению, это единственное решение.У кого-нибудь есть идея получше?

...