Yii2使用adminLTE的时候添加左侧菜单树上badge

添加之前.png 添加之后.png

更改:vendor\dmstr\yii2-adminlte-asset\widgets\Menu.php这个文件大概70行左右,有一个renderItem($item)的函数

更改之前是这样的:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
protected function renderItem($item)
    {
        if (isset($item['items'])) {
            $labelTemplate = '<a href="{url}">{icon} {label} <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>';
            $linkTemplate = '<a href="{url}">{icon} {label} <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>';
        } else {
            $labelTemplate = $this->labelTemplate;
            $linkTemplate = $this->linkTemplate;
        }
  // ... 之后的不变
}

更改为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
protected function renderItem($item)
    {
        if (isset($item['items'])) {
            $labelTemplate = '<a href="{url}">{icon} {label} <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>';
            $linkTemplate = '<a href="{url}">{icon} {label} <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>';
        } elseif (isset($item['badges']) && !empty($item['badges'])) {
            $right_container = '';
            foreach ($item['badges'] as $badge) {
                if (!isset($badge['text']) || empty($badge['text'])) continue;
                if (!isset($badge['color'])) $badge['color'] = 'primary';
                $right_container .= '<small class="label pull-right bg-'. $badge['color'] .'">'. $badge['text'] .'</small>';
            }
            $labelTemplate = $this->labelTemplate;
            $linkTemplate = '<a href="{url}">{icon} {label} <span class="pull-right-container">'. $right_container .'</span></a>';
        } else {
            $labelTemplate = $this->labelTemplate;
            $linkTemplate = $this->linkTemplate;
        }

使用方法: 使用方法.png

总得来说,就是多写一个判断,来添加badge的颜色和文字