深圳全飞鸿

标题: fastadmin的菜单显示逻辑 [打印本页]

作者: syant    时间: 2025-1-20 23:30
标题: fastadmin的菜单显示逻辑
本帖最后由 syant 于 2025-1-20 23:34 编辑

fastadmin的菜单显示逻辑

app/admin/view/index/index.html
          include file='common/menu'
   {$menulist}
搜索menulist
>>>>c:\apache24\htdocs\application50\admin\controller\index.php<<<<<
        list($menulist, $navlist, $fixedmenu, $referermenu) = $this->auth->getSidebar([
                $this->success('', null, ['menulist' => $menulist, 'navlist' => $navlist]);
        $this->view->assign('menulist', $menulist);
>>>>c:\apache24\htdocs\application50\common\library\menu.php<<<<<
        $menuList = [];
            $menuList = Tree::instance()->init($ruleList)->getTreeArray($menu['id']);
        return $menuList;


作者: syant    时间: 2025-1-20 23:36

搜索function getSidebar(
>>>>c:\apache24\htdocs\application50\admin\library\auth.php<<<<<
    public function getSidebar($params = [], $fixedPage = 'dashboard')



作者: syant    时间: 2025-1-21 11:24
重构实现同一个DBA数据库服务不同的项目app/admin/library/Auth.php中
加入代码:
$refererUrl = Session::get('referer');
                file_put_contents("c:/ss.txt",\app\admin\model\AuthRule::where('status', 'normal')
            ->where('ismenu', 1)
            ->order('weigh', 'desc')->buildSql());
        // 必须将结果集转换为数组
得到:
( SELECT * FROM `d_auth_rule` WHERE  `status` = 'normal'  AND `ismenu` = 1 ORDER BY `weigh` DESC )







作者: syant    时间: 2025-1-21 11:46
单级菜单的重构
一层菜单 二层菜单 三层菜单
  array (
    'id' => 111,
    'type' => 'file',
    'pid' => 0,
    'name' => '#sfc#qc',
    'title' => '品质管理',
    'icon' => 'fa fa-circle-o fa-fw',
    'url' => '/sfc/C.php/#sfc#qc',
    'condition' => '',
    'remark' => '',
    'ismenu' => 1,
    'menutype' => 'addtabs',
    'extend' => '',
    'py' => 'pzgl',
    'pinyin' => 'pinzhiguanli',
    'createtime' => 1737382564,
    'updatetime' => 1737382671,
    'weigh' => 0,
    'status' => 'normal',
    'badge' => '',
    'menuclass' => '',
    'menutabs' => 'addtabs="111"',
  )
array (
    'id' => 112,
    'type' => 'file',
    'pid' => 111,
    'name' => '#sfc#qc#repair',
    'title' => '维修管理',
    'icon' => 'fa fa-circle-o fa-fw',
    'url' => '/sfc/C.php/#sfc#qc#repair',
    'condition' => '',
    'remark' => '',
    'ismenu' => 1,
    'menutype' => 'addtabs',
    'extend' => '',
    'py' => 'wxgl',
    'pinyin' => 'weixiuguanli',
    'createtime' => 1737382658,
    'updatetime' => 1737382658,
    'weigh' => 0,
    'status' => 'normal',
    'badge' => '',
    'menuclass' => '',
    'menutabs' => 'addtabs="112"',
  )
array (
    'id' => 113,
    'type' => 'file',
    'pid' => 112,
    'name' => '#sfc#qc#repair#repairin',
    'title' => '不良品录入',
    'icon' => 'fa fa-circle-o fa-fw',
    'url' => '/sfc/L.php/repairsfc/repairin',
    'condition' => '',
    'remark' => '',
    'ismenu' => 1,
    'menutype' => 'addtabs',
    'extend' => '',
    'py' => 'blplr',
    'pinyin' => 'buliangpinluru',
    'createtime' => 1737382790,
    'updatetime' => 1737382790,
    'weigh' => 0,
    'status' => 'normal',
    'badge' => '',
    'menuclass' => '',
    'menutabs' => 'addtabs="113"',
  )
结论:1、菜单数据从后台获取回来时,并没有用某种逻辑做排序
2、有一个pid指向父,但似乎属性里没有说明自己是几级菜单的属性

作者: syant    时间: 2025-1-21 14:20
最后的getTreeMenu
搜索function getTreeMenu(
>>>>c:\apache24\htdocs\application\extend\fast\tree.php<<<<<
    public function getTreeMenu($myid, $itemtpl, $selectedids = '', $disabledids = '', $wraptag = 'ul', $wrapattr = '', $deeplevel = 0)


app/extend/fast/Tree.php
重构:







欢迎光临 深圳全飞鸿 (http://www.nagomes.com/disc/) Powered by Discuz! X3.2