laravel集成baum
安装git https://github.com/etrepat/baum
运行install后会生成migrate,默认有id, parent_id, lft, rgt, depth, 其他根据自己需要自定
$table->increments("id"); $table->string("title")->comment("栏目名称"); $table->integer("parent_id")->nullable()->index()->comment("父级id"); //生成的 $table->string("keywords")->nullable(); $table->string("description")->nullable(); $table->integer("sort"); $table->integer("is_show")->comment("是否显示"); $table->integer("lft")->nullable()->index(); //生成的 $table->integer("rgt")->nullable()->index(); //生成的 $table->integer("depth")->nullable(); //生成的模型:
model不继承Model,需要继承Node
<?php namespace App; use IlluminateDatabaseEloquentModel; use Baum; class Taxon extends BaumNode { protected $table = "taxons"; protected $fillable=["title","parent_id","keywords","description", "sort", "is_show", "lft", "rgt", "depth"]; }
自动填充
<?php namespace AppJobs; use AppTaxon; use IlluminateBusQueueable; use IlluminateFoundationBusDispatchable; class TaxonFormFields { use Dispatchable, Queueable; protected $id; protected $fieldList = [ "title" => "", "parent_id" => "", "keywords" => "", "description" => "", "is_show" => "1", "sort" => "50", ]; /** * Create a new job instance. * * @return void */ public function __construct($id = null) { $this->id = $id; } /** * Execute the job. * * @return void */ public function handle() { $fields = $this->fieldList; if ($this->id) { $fields = Taxon::findOrFail($this->id); } return $fields; } }
自定义request
<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class TaxonRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ "title" => "required" ]; } /** * Return the fields and values to create a new post from */ public function fillData() { return [ "title" => $this->title, "parent_id" => $this->parent_id, "keywords" => $this->keywords, "description" => $this->description, "is_show" => $this->is_show, "sort" => $this->sort, "lang" => "zh-cn", ]; } }
表单
<div class="form-group"> <label for="taxon_title" class="col-sm-1 control-label">{{ trans("admin.title") }}</label> <div class="col-sm-11"> <input type="text" class="form-control" id="taxon_title" name="title" value="{{ $title }}"> <p class="help-block">{{ $errors->first("title") }}</p> </div> </div> <div class="form-group"> <label for="taxon_keywords" class="col-sm-1 control-label">{{ trans("admin.keywords") }}</label> <div class="col-sm-11"> <input type="text" class="form-control" id="taxon_keywords" name="keywords" value="{{ $keywords }}"> </div> </div> <div class="form-group"> <label for="taxon_description" class="col-sm-1 control-label">{{ trans("admin.description") }}</label> <div class="col-sm-11"> <textarea class="form-control" id="taxon_description" name="description">{{ $description }}</textarea> </div> </div> <div class="form-group"> <label for="taxon_is_showe" class="col-sm-1 control-label">{{ trans("admin.is_show") }}</label> <div class="col-sm-11"> <input type="radio" id="taxon_is_show_1" name="is_show" value="{{ $is_show }}" @if($is_show == 1) checked="checked" @endif> {{ trans("admin.yes") }} <input type="radio" id="taxon_is_show_0" name="is_show" value="{{ $is_show }}" @if($is_show == 0) checked="checked" @endif> {{ trans("admin.no") }} </div> </div> <div class="form-group"> <label for="taxon_sort" class="col-sm-1 control-label">{{ trans("admin.sort") }}</label> <div class="col-sm-11"> <input type="text" class="form-control" id="taxon_sort" name="sort" value="{{ $sort }}"> </div> </div> <div class="form-group"> <div class="col-sm-offset-1 col-sm-11"> <input type="hidden" name="parent_id" value="{{ $parent_id }}" /> <input type="submit" class="btn btn-default" value="提交" /> </div> </div>
添加分类
/** * 创建新表单页面 * * @return Response */ public function create(Request $request) { $taxon = $this->dispatch(new TaxonFormFields()); $parent_id = $request->get( "parent_id", ""); $taxon["parent_id"] = $parent_id; return view("admin/taxon/create", $taxon); } /** * 将新创建存储到存储器 * * @param Request $request * @return Response */ public function store(TaxonRequest $request) { $parent = Taxon::find($request->input("parent_id")); $taxon = Taxon::create($request->fillData()); $taxon->makeChildOf($parent); return redirect("admin/taxons"); }
修改如果只修改数据,不修改分类结构就按照laravel修改就可以,
/** * 显示编辑表单页面 * * @param int $id * @return Response */ public function edit($id) { $taxon = $this->dispatch(new TaxonFormFields($id)); return view("admin/taxon/edit", $taxon); } /** * 在存储器中更新 * * @param Request $request * @param int $id * @return Response */ public function update(TaxonRequest $request, $id) { $taxon = Taxon::findOrFail($id); $taxon = $taxon->fill($request->fillData()); $taxon->save(); return redirect("admin/taxons"); }
删除
/** * 从存储器中移除 * * @param int $id * @return Response */ public function destroy($id) { $taxon = Taxon::findOrFail($id); $taxon->delete(); return response()->json(["error_num" => "0", "link" => "/admin/taxons"]); }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。