1. 引言
Laravel-admin是一个基于 Laravel 框架的后台管理系统,它提供了一系列便捷的工具和插件,用于快速搭建功能完善的后台管理界面。在实现对分类信息的管理时,laravel-admin中的ModelTree插件是一个非常有用的工具。本文将介绍如何利用ModelTree实现对分类信息的管理。
2. ModelTree概述
ModelTree是laravel-admin中提供的一个类似于树状结构的插件。它可以将数据库中的数据以树状结构的形式展示,并提供了一系列的操作方法,使得对数据的管理变得简单而直观。
2.1 安装ModelTree
首先,在项目的 `composer.json` 文件中添加以下依赖:
"require": {
"encore/laravel-admin": "~1.6",
"jstree/jstree": "~3.3"
}
然后执行 `composer update` 命令进行安装。
2.2 配置ModelTree
配置ModelTree非常简单,只需定义一个数据表对应的Model类,并继承`Encore\Admin\Traits\ModelTree`。
use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use ModelTree;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'parent_id'];
}
3. 使用ModelTree实现分类管理
现在我们已经安装并配置好了ModelTree,接下来我们可以在后台管理界面中实现对分类信息的管理。
3.1 创建分类管理页面
我们可以使用`php artisan admin:make CategoryController --model=App\\Category` 命令来快速生成分类管理控制器和模型。生成后的文件可以在`app/Admin/Controllers`目录下找到。
3.2 编写分类管理页面
在分类管理控制器中,我们可以使用`modelForm`方法来创建表单界面。在表单中,我们可以使用`nestable`字段来生成ModelTree所需的html元素。
public function form()
{
$form = new Form(new Category);
$form->display('id', 'ID');
$form->text('name', '名称');
$form->nestable('parent_id', '父级分类')->sortable();
return $form;
}
在上述代码中,`nestable`字段用于生成一个可拖拽的树状结构,用户可以通过拖拽来实现分类的层级调整。
3.3 保存分类信息
在分类管理控制器中,我们可以使用`store`方法来保存表单提交的数据。在保存数据之前,我们可以使用ModelTree提供的方法来调整分类的层级关系。
public function store()
{
$data = request()->except('_token', '_method');
// 调整分类的层级关系
$this->adjustCategoryLevel($data);
Category::create($data);
return redirect('/admin/categories');
}
protected function adjustCategoryLevel(&$data)
{
$parentId = $data['parent_id'];
if ($parentId == null || $parentId == '#') {
$data['parent_id'] = null;
}
}
在上述代码中,`adjustCategoryLevel`方法用于调整分类的层级关系。如果`parent_id`为空或者为`#`,则表示该分类为顶级分类,将`parent_id`设置为`null`。
4. 结语
通过ModelTree插件,我们可以轻松实现对分类信息的管理。它提供了简单而直观的界面和丰富的操作方法,使得我们能够快速搭建出功能完善的分类管理系统。
总之,Laravel-admin的ModelTree插件为分类信息的管理提供了便捷的解决方案,让我们可以更加专注于业务逻辑的实现,而无需过多关注界面和操作的细节。