[英]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 <b class="caret"></b>
在页面上。 所以我看到标题'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.