Browse Source

refactor: 多级菜单显示修改

antshop
root 5 years ago
parent
commit
32e9c73d06
  1. 14
      backend/views/layouts/sidebar.php
  2. 8
      vendor/iron/grid/GridView.php
  3. 33
      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' => '#', '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' => '#', 'icon' => 'far fa-list-alt', 'items' => [
['label' => '订单列表', 'url' => ['/order/index', 'tag' => 'new']],
['label' => '订单列表', 'url' => ['/order', 'tag' => 'new']],
] ]
], ],
] ]

8
vendor/iron/grid/GridView.php

@ -219,13 +219,13 @@ class GridView extends BaseListView
<div class="row"> <div class="row">
<div class="col-sm-12 col-md-6"> <div class="col-sm-12 col-md-6">
{batch} {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>--> <!-- <a href="#" data-url='export' class="export btn btn-default"><i class="fa fa-file-excel-o"></i>导出</a>-->
<div class="btn-group"> <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> <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"> <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> </ul>
</div> </div>
<!-- <button type="button" id="export" class="btn btn-default"><i class="fa fa-file-excel-o"></i>导出</button>--> <!-- <button type="button" id="export" class="btn btn-default"><i class="fa fa-file-excel-o"></i>导出</button>-->
@ -445,6 +445,8 @@ SCRIPT;
return $this->renderFilter(); return $this->renderFilter();
case '{batch}': case '{batch}':
return $this->renderBatch(); return $this->renderBatch();
case '{url}':
return Yii::$app->request->url;
default: default:
return false; return false;
} }

33
vendor/iron/widgets/Menu.php

@ -53,7 +53,8 @@ use yii\helpers\Url;
* *
* *
*/ */
class Menu extends Widget {
class Menu extends Widget
{
/** /**
* @var array 菜单的item数组。 * @var array 菜单的item数组。
@ -164,7 +165,8 @@ class Menu extends Widget {
/** /**
* 渲染菜单 * 渲染菜单
*/ */
public function run() {
public function run()
{
if ($this->route === null && Yii::$app->controller !== null) { if ($this->route === null && Yii::$app->controller !== null) {
$this->route = Yii::$app->controller->getRoute(); $this->route = Yii::$app->controller->getRoute();
} }
@ -186,7 +188,8 @@ class Menu extends Widget {
* @param array $items * @param array $items
* @return string 渲染结果 * @return string 渲染结果
*/ */
protected function renderItems($items) {
protected function renderItems($items)
{
$lines = []; $lines = [];
$n = count($items); $n = count($items);
foreach ($items as $i => $item) { foreach ($items as $i => $item) {
@ -234,7 +237,8 @@ class Menu extends Widget {
* @param array $item * @param array $item
* @return string 渲染结果 * @return string 渲染结果
*/ */
protected function renderItem($item) {
protected function renderItem($item)
{
if (isset($item['url'])) { if (isset($item['url'])) {
if (isset($item['template'])) { if (isset($item['template'])) {
$template = $item['template']; $template = $item['template'];
@ -262,21 +266,31 @@ class Menu extends Widget {
* @param $item array * @param $item array
* @return boolean $item * @return boolean $item
*/ */
protected function isItemActive($item) {
protected function isItemActive($item)
{
if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) { if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) {
$route = Yii::getAlias($item['url'][0]); $route = Yii::getAlias($item['url'][0]);
if ($route[0] !== '/' && Yii::$app->controller) { if ($route[0] !== '/' && Yii::$app->controller) {
$route = Yii::$app->controller->module->getUniqueId() . '/' . $route; $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; 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 true;
} }
return false; return false;
} }
@ -285,7 +299,8 @@ class Menu extends Widget {
* @param string $item * @param string $item
* @param bool $active * @param bool $active
*/ */
protected function normalizeItems($items, &$active) {
protected function normalizeItems($items, &$active)
{
foreach ($items as $i => $item) { foreach ($items as $i => $item) {
/* 去除visible 为 false的item */ /* 去除visible 为 false的item */
if (isset($item['visible']) && !$item['visible']) { if (isset($item['visible']) && !$item['visible']) {

Loading…
Cancel
Save