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 Illuminate\Database\Eloquent\Model;
use Baum;

class Taxon extends  Baum\Node
{
    protected $table = 'taxons';
    protected $fillable=['title','parent_id','keywords','description', 'sort', 'is_show', 'lft', 'rgt', 'depth'];
}

自动填充

<?php

namespace App\Jobs;

use App\Taxon;
use Illuminate\Bus\Queueable;
use Illuminate\Foundation\Bus\Dispatchable;

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 App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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']);
  }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值