随着互联网的发展,网站越来越复杂,功能越来越丰富,用户的需求也越来越多元化,为了方便用户快速定位所需要的功能,导航菜单成为了必不可少的一个元素。在ThinkPHP6中,如何使用导航菜单呢?本文将一步步为您介绍。
1.创建导航菜单数据表
在ThinkPHP6中,我们可以使用数据库来存储导航菜单信息,首先我们需要创建一个导航菜单的数据表。具体的表结构如下:
CREATE TABLE `menu` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL COMMENT '菜单名称', `url` varchar(255) NOT NULL DEFAULT '' COMMENT '菜单链接地址', `parent_id` bigint(20) UNSIGNED NOT NULL COMMENT '父级菜单ID', `order` int(11) NOT NULL DEFAULT '0' COMMENT '排序', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='导航菜单表';
2.导入数据
创建好导航菜单数据表之后,我们需要将导航菜单的数据导入到数据库中。一般情况下,我们可以通过以下几种方式导入数据:
- 直接手动在数据库中添加数据
- 使用命令行工具导入数据
- 编写脚本批量导入数据
3.创建菜单模型
在ThinkPHP6中,我们可以使用模型来连接数据库,获取数据库中的数据。因此,我们需要创建一个菜单模型,在模型中定义好表名、主键、自动时间戳等属性,具体代码如下:
<?php namespace appmodel; use thinkModel; class Menu extends Model { protected $table = 'menu'; protected $pk = 'id'; protected $autoWriteTimestamp = true; }
4.创建菜单控制器
菜单控制器负责处理和菜单相关的所有逻辑,包括如何获取菜单数据、如何渲染菜单视图等。在ThinkPHP6中,我们可以使用命令行工具快速生成控制器。具体命令如下:
php think make:controller Menu
命令执行完成之后,我们可以在appcontroller
目录下找到生成的Menu.php
文件。然后我们可以在控制器中定义一个获取导航菜单的方法,具体代码如下:
<?php namespace appcontroller; use appmodelMenu; use thinkacadeView; class MenuController { public function index() { // 获取一级菜单 $menus = Menu::where('parent_id', 0)->order('order')->select(); // 获取当前选中的菜单ID $selectedId = input('get.id', ''); View::assign([ 'menus' => $menus, 'selectedId' => $selectedId, ]); return View::fetch('index'); } }
在控制器中,我们使用Menu
模型的where
方法来获取一级菜单,然后将菜单数据和当前选中的菜单ID分配给视图,最后渲染视图。
5.创建菜单视图
菜单视图用于展示导航菜单,我们可以将导航菜单展示在页面的头部或者左侧,具体位置可以根据实际需求来确定。在视图中,我们可以使用foreach
循环来遍历菜单数据,然后输出对应的HTML代码。
<nav> <ul> <?php foreach ($menus as $menu): ?> <li class="<?php if ($selectedId == $menu['id']) echo 'active' ?>"> <a href="<?php echo $menu['url'] ?>"><?php echo $menu['title'] ?></a> </li> <?php endforeach; ?> </ul> </nav>
6.创建路由
在ThinkPHP6中,我们需要创建一个路由来访问菜单控制器的index
方法,具体代码如下:
use thinkacadeRoute; Route::get('menu/index', 'MenuController@index');
路由定义好之后,我们就可以通过http://localhost/menu/index
来访问菜单页面了。
总结