htmlyiicmenu

How to add raw HTML in Yii CMenu label


I create a menu like a Twitter Bootstrap navbar with CMenu widget:

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

This code generate menu with 2 items in it and 1 submenu for second menu item. Fine. But only thing, which not worked is 'label' => 'Dropdown <b class="caret"></b>', in 9th line. It rendered as Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt; on page. So I see caption 'Dropdown <b class="caret"></b>' instead of Dropdown ▼.

How I can change code to show unescaped HTML in menu label?

Thanks for your attention.


Solution

  • You have to set encodeLabel attribute of CMenu to 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'),
            ),
        ),
    ));
    ?>