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()) ?> <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);
Я надеюсь, что это поможет вам.
Извините за мой английский, я не владею английским