Zend 2 Navigation добавляет <i> перед именем метки

У меня есть следующий массив навигации, но теперь я хочу, прежде чем мой ярлык.

Как и где я могу добавить это?

Выход должен быть:

<ul class="sidebar-nav">
    <li class="active">
        <a href="/admin/users"><i class="gi gi-user sidebar-nav-icon"></i> Users</a>
    </li>
</ul>

Конфигурация модуля массива:

 'navigation' => array(
     'default' => array(
         array(
             'label' => 'Users',
             'route' => 'user_list',
             'pages' => array(
                 array(
                    'label' => 'add user',
                    'route' => 'user_add',
                 ),
             ),
         ),

Навигация:

echo $this->navigation('navigation')
    ->setTranslator($this->plugin('translate')->getTranslator())
    ->menu()
    ->setUlClass('sidebar-nav')
    ->setMaxDepth(0)

1 ответ

Решение

Вы должны установить новый шаблон для вашей Zend_Navigation,

Добавьте информацию о значке в ваш массив,

'navigation' => array(
     'default' => array(
         array(
             'label' => 'Users',
             'icon'  => 'gi gi-user',
             'route' => 'user_list',
             'pages' => array(
                 array(
                    'label' => 'add user',
                    'route' => 'user_add',
                 ),
             ),
         ),

Создайте новый шаблон topnav.phtml, вот тот, который я использовал в предыдущем проекте. Быть осторожен! Есть много различий, потому что я использовал некоторые другие варианты. Это всего лишь образец.

    <ul class="nav navbar-nav">
    <?php $count = 0 ?>
    <?php foreach ($this->container as $page): ?>
        <?php /* @var $page Zend\Navigation\Page\Mvc */ ?>
        <?php // when using partials we need to manually check for ACL conditions ?>
        <?php if( ! $page->isVisible() || !$this->navigation()->accept($page)) continue; ?>
        <?php $hasChildren = $page->hasPages() ?>
        <?php if( ! $hasChildren): ?>
            <?php
                $class="";
                $class.=$page->isActive(true)?' active ':'';
                $class.=$page->get('class')?$page->get('class'):'';
            ?>
        <li <?php if($class) echo 'class="'.$this->escapehtmlattr($class).'"';?>>
            <a class="nav-header" href="<?php echo $page->getHref() ?>" <?php if ($page->getTitle()) echo 'title="'.$this->escapehtmlattr($page->getTitle()).'"'; ?>>
                <?php if ($page->get('icon')):?>
                <i class="<?php echo $page->get('icon');?>"></i>
                <?php endif;?>
                <?php echo $this->translate($page->getLabel()) ?>
            </a>
        </li>
        <?php else: ?>
        <li class="dropdown <?php if ($page->isActive(true)) echo ' active';?>">
            <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                <?php if ($page->get('icon')):?>
                <i class="<?php echo $page->get('icon');?>"></i>
                <?php endif;?>
            <span><?php echo $this->translate($page->getLabel()) ?>&nbsp;<b class="caret"></b></span>
            </a>

            <ul class="dropdown-menu" id="page_<?php echo $count ?>">
            <?php foreach($page->getPages() as $child): ?>
                <?php // when using partials we need to manually check for ACL conditions ?>
                <?php if( ! $child->isVisible() || !$this->navigation()->accept($child)) continue; ?>
                <li>
                    <a href="<?php echo $child->getHref() ?>" <?php if ($child->getTitle()) echo 'title="'.$this->translate($child->getTitle()).'"'; ?>>
                        <?php if ($child->get('icon')):?>
                        <i class="<?php echo $child->get('icon');?>"></i>
                        <?php endif;?>
                        <?php echo $this->translate($child->getLabel()) ?>
                    </a>
                </li>
            <?php endforeach ?>
            </ul>
         </li>
        <?php endif ?>
        <?php $count++ ?>
    <?php endforeach ?>
</ul>

В вашем layout.phtml объявите новый шаблон:

//Préparation du menu 
$partialMenu = array('navigation/topnav.phtml','default');
$this->navigation('navigation')->menu()->setPartial($partialMenu);

Я надеюсь, что это поможет вам.

Извините за мой английский, я не владею английским

Другие вопросы по тегам