簡體   English   中英

如何在Yii CMenu標簽中添加原始HTML

[英]How to add raw HTML in Yii CMenu label

我使用CMenu小部件創建了一個類似Twitter Bootstrap導航欄的菜單:

<?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' ),
    )); ?>

此代碼生成菜單,其中包含2個項目和第二個菜單項的1個子菜單。 精細。 但唯一不起作用的是'label' => 'Dropdown <b class="caret"></b>',在第9行。 它呈現為Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt; 在頁面上。 所以我看到標題'Dropdown <b class="caret"></b>'而不是Dropdown ▼

如何更改代碼以在菜單標簽中顯示未轉義的HTML?

感謝您的關注。

您必須將CMenu encodeLabel屬性設置為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'),
        ),
    ),
));
?>

我的解決方案是創建CMenu擴展:

布局/ 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 /部件/ 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']);
}

}

在Yii 2.0中,要在導航欄菜單中添加glyphicon,您可以按照以下信息進行操作。

renderItem函數下的vendor \\ yiisoft \\ yii2-bootstrap \\ Nav.php中renderItem以下代碼:

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

現在,您可以直接使用帶有icons選項的代碼中的任何圖標作為

    <?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' ),
)); ?>

即使在舊版本的yii中,您也可以進行相應的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM