ThinkPHP菜单无极分类实例讲解

网络编程 2025-03-13 19:42www.168986.cn编程入门

ThinkPHP菜单无极分类实例详解

一、预览效果图

二、Controller端的菜单列表处理

在ThinkPHP框架中,处理菜单的无极分类首先需要在Controller层进行数据的获取和排序。以下是一个`index`方法的示例代码,它负责获取数据库中的菜单数据并进行递归排序。

```php

public function index() {

// 从数据库获取菜单列表

$menuList = Db::name('menu')->order('sort,id')->select();

// 使用递归函数对菜单进行排序

$menuList = $this->sort($menuList);

// 将排序后的菜单列表赋值给视图

$this->assign('menuList', $menuList);

// 返回视图

return view();

}

protected function sort($data, $pid = 0, $level = 0) {

// 注意:数据需要是静态数组以保证递归的正确性

static $arr = array();

foreach ($data as $key => $value) {

if ($value['pid'] == $pid) {

$value["level"] = $level; // 设置层级信息

$arr[] = $value; // 添加到静态数组中

unset($this->data[$key]); // 移除原数组元素,避免重复处理同一元素

$this->sort($data, $value['id'], $level + 1); // 递归处理子菜单

}

}

return $arr; // 返回排序后的菜单数组

}

```

三、HTML模板中的菜单展示

在HTML模板中,我们可以利用循环遍历Controller层传递的菜单列表,并依据菜单的层级信息展示不同的菜单结构。以下是相关的HTML代码片段:

```html

{% for menu in menuList %}

{% if menu.pid != 0 %}

上一篇:PHP递归算法的简单实例 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by