专栏首页Debug客栈Laravel入门之实现菜单的树形分类

Laravel入门之实现菜单的树形分类

实现菜单的树形分类主要是有两个比较重要的点,上图我们可以看到分类是三级分类,实现了对菜单的限制,其中主要是有以下几个点需要注意,之后就乘上热乎乎的代码:

  1. SQL语句的拼接撰写,形成原始数据;
  2. 前台渲染根据path路径字符串判断需要加几处分段符;
  3. 判断三层菜单,并禁止三层菜单继续向下分级。

路由设置

Route::get('types', 'TypesController@index');

后端读取处理方法

/**
 * 菜单控制首页
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
public function index(){
    // 求取行数
    $count = DB::table('dzushop_types')->count();

    // 查询树形结构并且运用concat函数生成新字段进行排序
    $data = DB::table('dzushop_types')
        ->select(DB::raw('dzushop_types.*, concat(path,id) p'))
        ->orderBy("p","asc")
        ->paginate(10);
    return view("admin.types.index")
        ->with('data', $data)
        ->with('count', $count);
}

其核心语句就是查询构造器对表的查询拼接及排序:

DB::table('dzushop_types')
        ->select(DB::raw('dzushop_types.*, concat(path,id) p'))
        ->orderBy("p","asc")
        ->paginate(10);

前台渲染判断语句

<?php
    $arr = explode(',', $value->path);
    $tot = count($arr)-2;
?>
<td>{{ str_repeat('|-----',$tot) }}{{ $value->name }}</td>

三级分类约束语句

<td>
    @if($tot >= 2)
        <span class="btn btn-sm btn-rounded btn-gradient-secondary">添加子类</span>
    @else
        <a href="/admin/types/create?pid={{ $value->id }}&path={{ $value->path }}{{ $value->id }},">
            <span class="btn btn-sm btn-rounded btn-gradient-primary">添加子类</span>
        </a>
    @endif
</td>

最终效果图:

本文链接:https://www.debuginn.cn/3403.html

本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • FutureTask 核心源码解析

    研究源码,一般我们都从整体以及实例先入手,再研究细节,不至于一开始就“深陷其中而"当局者迷".

    JavaEdge
    HTTPJava
  • 200行代码落地人脸识别开锁应用

    2019年国庆,帮朋友实现了一个人脸识别进行开锁的功能,用在他的真人实景游戏业务中。几个月来运行稳定,体验良好,借着这个春节宅家的时间,整理一下这个应用的实现过程。

    高树磊
    人脸识别图像处理
  • 滑动验证码攻防对抗

        在业务安全领域,滑动验证码已经是国内继,传统字符型验证码之后的标配。众所周知,打码平台和机器学习这两种绕过验证码的方式,已经是攻击者很主流的思路,不再阐述。冷渗透介绍的是一个冷门的绕过思路和防御方案。这些积累,均来自于实战之中,希望有用。

    周俊辉
    HTTP网络安全安全网站
  • 程序员进阶必读,万字总结Mysql优化精华篇

    price decimal(8,2)有2位小数的定点数,定点数支持很大的数(甚至是超过int,bigint存储范围的数)

    程序员内点事
    全文检索缓存SQL数据库Python
  • 运维转型 | 运维人不再只是“救火英雄”

    各行各业都开启了数字化转型的进程,运维团队在这种时代的浪潮中又该何去何从?我在帮助一些企业落地了运维技术平台之后,开始反思这个问题,并将所思所想整理成本篇文章。

    嘉为科技
    企业运维自动化云计算
  • WEB开发常见的安全漏洞和解决思路

    SQL注入时web开发中最常见也是危害性最大的安全漏洞,SQL注入攻击可能会导致 服务器故障,数据泄漏,数据被恶意删除等等严重后果。

    windwei
    SQLHTTPhttps安全漏洞PHP
  • 详解Winograd变换矩阵生成原理

    文本首发知乎:https://zhuanlan.zhihu.com/p/87516875

    Ldpe2G
    编程算法
  • Linux网络性能优化相关策略

    1. rx-checksumming:校验接收报文的checksum。

    glinuxer
    Linux
  • 助力「宅家抗疫」,腾讯云大学大咖分享不停!

    抗“疫”攻坚时刻,「腾讯云大学」联合「腾讯云最具价值专家(TVP)团队」重磅打造抗“疫”特别专题

    腾讯云大学
    腾讯云大学
  • “协力抗疫,码力全开”线上公益黑马+19号+同乘码

    疫情爆发时期, 同乘交通工具会有交叉感染的风险, 小程序「同乘码」提供了快速建聊天群的二维码. 主要亮点:

    大副007
    云开发小程序 · 云开发

扫码关注云+社区

领取腾讯云代金券