Browse Source

refactor: 多级菜单显示修改

antshop
root 5 years ago
parent
commit
32e9c73d06
  1. 14
      backend/views/layouts/sidebar.php
  2. 24
      vendor/iron/grid/GridView.php
  3. 41
      vendor/iron/widgets/Menu.php

14
backend/views/layouts/sidebar.php

@ -22,16 +22,16 @@ use iron\widgets\Menu;
],
['label' => '商品管理', 'url' => '#', 'icon' => 'far fa-archive', 'items' => [
['label' => '规格管理', 'url' => ['/antgoods/attribute/index']],
['label' => '商品列表', 'url' => ['/antgoods/goods/index']],
['label' => '后台商品分类', 'url' => ['/antgoods/category/index']],
['label' => '前端商品分类', 'url' => ['/antgoods/shopcategory/index']],
['label' => '品牌管理', 'url' => ['/antgoods/brand/index']],
['label' => '供应商管理', 'url' => ['/antgoods/supplier/index']],
['label' => '规格管理', 'url' => ['/antgoods/attribute']],
['label' => '商品列表', 'url' => ['/antgoods/goods']],
['label' => '后台商品分类', 'url' => ['/antgoods/category']],
['label' => '前端商品分类', 'url' => ['/antgoods/shopcategory']],
['label' => '品牌管理', 'url' => ['/antgoods/brand']],
['label' => '供应商管理', 'url' => ['/antgoods/supplier']],
]
],
['label' => '订单管理', 'url' => '#', 'icon' => 'far fa-list-alt', 'items' => [
['label' => '订单列表', 'url' => ['/order/index', 'tag' => 'new']],
['label' => '订单列表', 'url' => ['/order', 'tag' => 'new']],
]
],
]

24
vendor/iron/grid/GridView.php

@ -219,13 +219,13 @@ class GridView extends BaseListView
<div class="row">
<div class="col-sm-12 col-md-6">
{batch}
<a href="create" class="btn btn-default"><i class="fas fa-plus-square mr-2"></i>添加</a>
<a href="{url}/create" class="btn btn-default"><i class="fas fa-plus-square mr-2"></i>添加</a>
<!-- <a href="#" data-url='export' class="export btn btn-default"><i class="fa fa-file-excel-o"></i>导出</a>-->
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fas fa-file-upload mr-2"></i>导出</button>
<ul class="dropdown-menu" role="menu">
<li> <a class="dropdown-item export-page" href="#" data-url="export">本页</a></li>
<li> <a class="dropdown-item export-all" href="#" data-url="export">全部</a></li>
<li> <a class="dropdown-item export-page" href="#" data-url="{url}/export">本页</a></li>
<li> <a class="dropdown-item export-all" href="#" data-url="{url}/export">全部</a></li>
</ul>
</div>
<!-- <button type="button" id="export" class="btn btn-default"><i class="fa fa-file-excel-o"></i>导出</button>-->
@ -281,14 +281,14 @@ HTML;
throw new InvalidConfigException('The "formatter" property must be either a Format object or a configuration array.');
}
$this->pager = [
'options'=>['class'=>['justify-content-end','pagination']],
'linkOptions'=>['class'=>'page-link'],
'pageCssClass'=>'paginate_button page-item',
'disabledPageCssClass'=>'page-link disabled',
'firstPageLabel'=>'&laquo;',
'prevPageLabel'=>'&lsaquo;',
'nextPageLabel'=>'&rsaquo;',
'lastPageLabel'=>'&raquo;',];
'options' => ['class' => ['justify-content-end', 'pagination']],
'linkOptions' => ['class' => 'page-link'],
'pageCssClass' => 'paginate_button page-item',
'disabledPageCssClass' => 'page-link disabled',
'firstPageLabel' => '&laquo;',
'prevPageLabel' => '&lsaquo;',
'nextPageLabel' => '&rsaquo;',
'lastPageLabel' => '&raquo;',];
$this->initColumns();
}
@ -445,6 +445,8 @@ SCRIPT;
return $this->renderFilter();
case '{batch}':
return $this->renderBatch();
case '{url}':
return Yii::$app->request->url;
default:
return false;
}

41
vendor/iron/widgets/Menu.php

@ -53,7 +53,8 @@ use yii\helpers\Url;
*
*
*/
class Menu extends Widget {
class Menu extends Widget
{
/**
* @var array 菜单的item数组。
@ -132,8 +133,8 @@ class Menu extends Widget {
public $options = [
'class' => 'nav nav-pills nav-sidebar flex-column',
'data-widget' => 'treeview',
'role'=>'menu',
'data-accordion'=>'false'
'role' => 'menu',
'data-accordion' => 'false'
];
/**
@ -164,7 +165,8 @@ class Menu extends Widget {
/**
* 渲染菜单
*/
public function run() {
public function run()
{
if ($this->route === null && Yii::$app->controller !== null) {
$this->route = Yii::$app->controller->getRoute();
}
@ -186,7 +188,8 @@ class Menu extends Widget {
* @param array $items
* @return string 渲染结果
*/
protected function renderItems($items) {
protected function renderItems($items)
{
$lines = [];
$n = count($items);
foreach ($items as $i => $item) {
@ -234,7 +237,8 @@ class Menu extends Widget {
* @param array $item
* @return string 渲染结果
*/
protected function renderItem($item) {
protected function renderItem($item)
{
if (isset($item['url'])) {
if (isset($item['template'])) {
$template = $item['template'];
@ -244,7 +248,7 @@ class Menu extends Widget {
return strtr($template, [
'{url}' => Html::encode(Url::to($item['url'])),
'{label}' => Html::encode($item['label']),
'{class}'=>isset($item['active'])?'active':'',
'{class}' => isset($item['active']) ? 'active' : '',
'{icon}' => Html::encode($item['icon'])
]);
}
@ -253,7 +257,7 @@ class Menu extends Widget {
return strtr($template, [
'{label}' => $item['label'],
'{class}'=>isset($item['active'])?'active':''
'{class}' => isset($item['active']) ? 'active' : ''
]);
}
@ -262,21 +266,31 @@ class Menu extends Widget {
* @param $item array
* @return boolean $item
*/
protected function isItemActive($item) {
protected function isItemActive($item)
{
if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) {
$route = Yii::getAlias($item['url'][0]);
if ($route[0] !== '/' && Yii::$app->controller) {
$route = Yii::$app->controller->module->getUniqueId() . '/' . $route;
}
if (ltrim($route, '/') !== $this->route) {
$route = ltrim($route, '/');
if ($route != substr($this->route, 0, strrpos($this->route, '/')) && $route != $this->route &&
ltrim(Yii::$app->request->url, '/') !== $route) {
return false;
}
unset($item['url']['#']);
if (count($item['url']) > 1) {
foreach (array_splice($item['url'], 1) as $name => $value) {
if ($value !== null && (!isset($this->params[$name]) || $this->params[$name] != $value)) {
return false;
}
}
}
return true;
}
return false;
}
@ -285,7 +299,8 @@ class Menu extends Widget {
* @param string $item
* @param bool $active
*/
protected function normalizeItems($items, &$active) {
protected function normalizeItems($items, &$active)
{
foreach ($items as $i => $item) {
/* 去除visible 为 false的item */
if (isset($item['visible']) && !$item['visible']) {

Loading…
Cancel
Save