首页
学
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
享
【享】文件
【享】工具
日记
Me
【Me】我
【Me】留言
老郭博客-程序员客栈
文章模型
下载模型
首页
学
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
享
【享】文件
【享】工具
日记
Me
【Me】我
【Me】留言
首页
学
【学】PHP
Laravel - 菜单列表视图
Laravel - 菜单列表视图
发布时间:
2年前
作者:
老郭
热度:
1047 ℃
评论数:
# 菜单列表视图-start * 获取菜单列表方法改进 上一篇文章中,我们在仓库中编写了获取菜单并按照降序排列的数组。下面我们来完善一下这个方法,使其这个方法更加好用。 打开 `app\Repositories\Eloquent\MenuRepository.php` ,进行编写。 ``` <?php namespace App\Repositories\Eloquent; use App\Repositories\Eloquent\Repository; use App\Models\Menu; use Cache; /** * 菜单仓库 */ class MenuRepository extends Repository { public function model() { return Menu::class; } /* * 递归调用菜单数据 */ public function sortMenu($menus,$pid=0) { $arr = []; if (empty($menus)) { return ''; } foreach ($menus as $key => $value) { if ($value['parent_id'] == $pid) { $arr[$key] = $value; $arr[$key]['child'] = self::sortMenu($menus,$value['id']); } } return $arr; } /* * 排序子菜单并缓存 * --------------------------------- * array_column($array,$name) * $array => 要查询的数组 * $name => 在数组中要返回的字段值 *---------------------------------- * array_multisort($array1,$rule,$array2) * $array1 => 规定数组(规定以这个数组来排序) * $rule => 规定排列顺序。 * 可能的值: * SORT_ASC - 默认。按升序排列 (A-Z)。 * SORT_DESC - 按降序排列 (Z-A)。 * $array2 => 要规定的数组。(要排序的数组) */ public function sortMenuSetCache() { $menus = $this->model->orderBy('sort','desc')->get()->toArray(); if ($menus) { $menuList = $this->sortMenu($menus); foreach ($menuList as $key => $value) { if ($value['child']) { $sort = array_column($value['child'], 'sort'); array_multisort($sort,SORT_DESC,$value['child']); } } return $menuList; } return ''; } /* * 获取菜单数据 */ public function getMenuList() { return $this->sortMenuSetCache(); } ``` * 菜单列表视图展示(Presenter): 最大限度的复用方法,在app\Repositories\Presenter\MenuPresenter.php 文件下面编写前台展示代码的方法: ``` //菜单列表视图 public function getMenuList($menus){ if ($menus){ $item = ''; foreach ($menus as $v){ $item .= $this->getNetableItem($v['id'],$v['name'],$v['child']); } return $item; } return '暂无菜单'; } //返回菜单 HTML代码 public function getNetableItem($id,$name,$child){ if ($child){ return $this->getHandleList($id,$name,$child); } return '<li class="dd-item dd3-item" data-id="'.$id.'"><div class="dd-handle dd3-handle"> </div><div class="dd3-content"> '.$name.' </div> </li>'; } //判断是否有子集 public function getHandleList($id,$name,$child){ $handle = '<li class="dd-item dd3-item" data-id="'.$id.'"><div class="dd-handle dd3-handle"> </div><div class="dd3-content"> '.$name.' </div><ol class="dd-list">'; foreach ($child as $v){ $handle .= $this->getNetableItem($v['id'],$v['name'],$v['child']); } $handle .= '</ol></li>'; return $handle; } ``` 然后从前台相应的位置调用方法即可。 首先要在前台引入此文件,代码如下: ``` @inject('menus','App\Repositories\Presenter\MenuPresenter') ``` 然后再从指定位置调用方法,以达到实现页面的目的,代码如下: ``` {!! $menus->getMenuList($menu) !!} ``` # 菜单列表视图-end
Laravel,list,列表.view,视图
上一篇:
Laravel - 菜单递归及排序
下一篇:
Laravel - Redis 缓存菜单数据
栏目导航
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
相关文章
Laravel中的Controller(控制器)
1198 ℃
Laravel中的Model(模型)
1340 ℃
Laravel中的Route(路由)
1620 ℃
Laravel中的Middleware(中间件)
1159 ℃
Laravel的任务调度(定时任务)
2231 ℃
Laravel中带有条件搜索加分页
941 ℃
Composer - 快速入门(如有遗漏,敬请谅解)
1140 ℃
Laravel - 数据迁移
928 ℃
Laravel - 数据填充
970 ℃
Laravel - 论配置文件的重要性
961 ℃
Laravel - CSRF 攻击与防御
850 ℃
Laravel - 验证码(captcha)
1178 ℃
Laravel - Entrust 权限管理包安装与配置
1119 ℃
Laravel - Entrust 实例安装与数据填充
968 ℃
Laravel - Entrust 使用方法
926 ℃
Laravel - 服务设计模式
1174 ℃
Laravel - 后台模版、菜单表与路由定义
1492 ℃
Laravel - 菜单视图
1330 ℃
Laravel - 添加菜单
914 ℃
Laravel - 菜单递归及排序
1349 ℃
Laravel - 菜单列表视图
1047 ℃
Laravel - Redis 缓存菜单数据
2411 ℃
微信小程序
手机扫码访问