2013-03-04 14 views
10

utworzyć menu na pasku nawigacyjnym Twitter jak Bootstrap z widget CMenu: menu z 2 pozycji w nim i 1 podmenu do drugiego elementu menuJak dodać surowego HTML w Yii CMenu etykiecie

<?php 
    $this->widget('zii.widgets.CMenu', array(
    'items' => array(
     array(
      'label' => 'Home', 
      'url' => array('/site/index'), 
     ), 
     array( 
      'label' => 'Dropdown <b class="caret"></b>', 
      'url' => '#', 
      'submenuOptions' => array('class' => 'dropdown-menu'), 
      'items' => array( 
       array( 
        'label' => 'Submenu Item 1', 
        'url' => array('/user/create'), 
       ), 
       array( 
        'label' => 'Submenu Item 1', 
        'url' => array('/user/list'), 
       ), 
      ), 
      'itemOptions' => array('class' => 'dropdown'), 
      'linkOptions' => array('class' => 'dropdown-toggle', 'data-toggle' => 'dropdown'), 
     ), 
     'htmlOptions' => array('class' => 'nav'), 
    )); ?> 

Ten kod wygeneruje. W porządku. Ale jedyną rzeczą, która nie zadziałała jest 'label' => 'Dropdown <b class="caret"></b>', w 9 linii. Wypisano jako Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt; na stronie. Więc widzę podpis 'Dropdown <b class="caret"></b>' zamiast Dropdown ▼.

W jaki sposób mogę zmienić kod, aby wyświetlić kod HTML bez zmiany znaczenia w etykiecie menu?

Dziękuję za uwagę.

+0

http://www.cniska.net/yii-bootstrap/#tbNavbar – hungneox

Odpowiedz

22

Musisz ustawić encodeLabel atrybut CMenu do false

<?php 
$this->widget('zii.widgets.CMenu', array(
    'encodeLabel' => false, 
    'htmlOptions' => array('class' => 'nav'), 
    'items' => array(
     array(
      'label' => 'Home', 
      'url' => array('/site/index'), 
     ), 
     array(
      'label' => 'Dropdown <b class="caret"></b>', 
      'url' => '#', 
      'submenuOptions' => array('class' => 'dropdown-menu'), 
      'items' => array(
       array(
        'label' => 'Submenu Item 1', 
        'url' => array('/user/create'), 
       ), 
       array(
        'label' => 'Submenu Item 1', 
        'url' => array('/user/list'), 
       ), 
      ), 
      'itemOptions' => array('class' => 'dropdown'), 
      'linkOptions' => array('class' => 'dropdown-toggle', 'data-toggle' => 'dropdown'), 
     ), 
    ), 
)); 
?> 
+0

Działa. Dzięki Tobie! – doktorgradus

1

moje rozwiązanie jest tworzenie CMenu rozszerzenie:

układ/main.php

'submenuOptions'=>array('class'=>'dropdown-menu'), 
'itemOptions'=>array('class'=>'dropdown'), 
'linkOptions'=>array('class'=>'dropdown-toggle', 'data-toggle'=>'dropdown'), 
// Dropdown arrow toggle 
'dropdownArrow'=>true, 

ext/widżety /BootstrapCMenu.php

class BootstrapCMenu extends CMenu { 

protected function renderMenuItem($item) 
{ 
    if(isset($item['url'])) 
    { 
     $item['label'] .= ($item['dropdownArrow']) ? ' <b class="caret"></b>' : ''; 
     $label=$this->linkLabelWrapper===null ? $item['label'] : CHtml::tag($this->linkLabelWrapper, $this->linkLabelWrapperHtmlOptions, $item['label']); 
     return CHtml::link($label,$item['url'],isset($item['linkOptions']) ? $item['linkOptions'] : array()); 
    } 
    else 
     return CHtml::tag('span',isset($item['linkOptions']) ? $item['linkOptions'] : array(), $item['label']); 
} 

} 
0

W Yii 2.0, w celu dodania glifotypu w menu na pasku można wykonać poniższe informacje.

Edycja w sprzedawca \ yiisoft \ yii2-bootstrap \ Nav.php pod renderItem funkcji następującego kodu:

 if(isset($item['icons'])) 
     $label=Html::tag('span', '', ['class' => 'glyphicon glyphicon-'.$item['icons']]).$label; 

Teraz można bezpośrednio wykorzystać dowolną ikonę z kodu z icons opcji jak

<?php 
$this->widget('zii.widgets.CMenu', array(
'items' => array(
    array(
     'label' => 'Home', 
     'url' => array('/site/index'), 
     'icons'=> 'home', 
    ), 
    array( 
     'label' => 'Dropdown <b class="caret"></b>', 
     'url' => '#', 
     'submenuOptions' => array('class' => 'dropdown-menu'), 
     'items' => array( 
      array( 
       'label' => 'Submenu Item 1', 
       'url' => array('/user/create'), 
      ), 
      array( 
       'label' => 'Submenu Item 1', 
       'url' => array('/user/list'), 
      ), 
     ), 
     'itemOptions' => array('class' => 'dropdown'), 
     'linkOptions' => array('class' => 'dropdown-toggle', 'data-toggle' => 'dropdown'), 
    ), 
    'htmlOptions' => array('class' => 'nav'), 
)); ?> 

Możesz wprowadzić odpowiednie zmiany nawet w starszych wersjach yii.