按照laravel的基本操作步骤,依次完成以下操作:主要参考laravel-admin内置的Menu菜单管理功能,在业务中使用ModelTree实现Tree数据管理。1.创建模型phpartisanmake:modelModels/Category2。创建迁移文件phpartisanmake:migrationcreate_categories_table3。创建一个填充文件phpartisanmake:seederCategoriesSeeder4。创建后端控制器phpartisanadmin:makeCategoryController--model=App\Models\Category5。创建后端路由app/admin/routes.php:$router->resource('/web/categories',CategoryController::class);6.添加后台菜单/web/categories:menupath7.其他定义和编辑自定义定义模型文件Category.phpnamespaceApp\Models;useEncore\Admin\Traits\AdminBuilder;useEncore\Admin\Traits\ModelTree;useIlluminate\Database\Eloquent\Model;classCategoryextendsModel{useModelTree,管理建设者;//protected$fillable=['name','description','order','parent_id'];公共函数__construct(array$attributes=[]){parent::__construct($attributes);$this->setParentColumn('parent_id');$this->setOrderColumn('订单');$this->setTitleColumn('名称');}}确定义迁移classCreateCategoriesTableextendsMigration{/***运行迁移。**@returnvoid*/publicfunctionup(){Schema::create('categories',function(Blueprint$table){$table->increments('id');$table->string('name');$table->string('description')->nullable();$table->integer('order')->unsigned();$table->integer('parent_id')->unsigned()->nullable();$table->timestamps();});}/***反转迁移。**@returnvoid*/publicfunctiondown(){Schema::dropIfExists('categories');}}填充文件classCategoriesSeederextendsSeeder{/***运行数据库种子。**@returnvoid*/publicfunctionrun(){//DB::table('categories')->delete();对于($i=0;$i<3;$i++){DB::table('categories')->insert(['name'=>'CAT'.$i,'description'=>'desc_'.$i,'order'=>$i,'parent_id'=>空]);}}}定义控制header($this->header);}$content->description('类型列表');$content->row(function(Row$row){$row->column(6,$this->treeView()->render());$row->column(6,function(Column$column){$form=new\Encore\Admin\Widgets\Form();$form->action(admin_base_path('/web/categories'));$form->text('name','typename');$form->textarea('description','类型描述信息');$form->number('order','排序编号');$form->select('parent_id','父类名')->options(Category::selectOptions());$form->hidden('_token')->default(csrf_token());$column->append((newBox(trans('admin.new'),$form))->style('成功'));});});});}protectedfunctiontreeView(){returnCategory::tree(function(Tree$tree){$tree->disableCreate();返回$树;});}/***编辑界面。**@param$id*@returnContent*/publicfunctionedit($id){returnAdmin::content(function(Content$content)use($id){$content->header($this->header)};$content->description('编辑类型');$content->body($this->form()->edit($id));});}/***创建接口。**@returnContent*/publicfunctioncreate(){returnAdmin::content(function(Content$content){$content->header($this->header);$content->description('添加类型');$content->body($this->form());});}/***创建一个表单生成器。**@returnForm*/protectedfunctionform(){returnAdmin::form(Category::class,function(Form$form){$form->display('id','ID');}$form->text('名字','输入名字');$form->textarea('description','键入描述信息');$form->number('顺序','排序数字');$form->select('parent_id','父类名')->options(Category::selectOptions());});}publicfunctiongetCategoryOptions(){returnDB::table('categories')->select('id','nameastext')->get();}}添加路由$router->resource('/web/categories',CategoryController::class);添加后台菜单具体操作略
