Laravel admin uses modeltree to manage classification information

Time:2021-9-17

Generate model and migration files


php artisan make:model Models/Shoping/Category -m

app/Models/Shoping/Category.php


<?php

namespace App\Models\Shoping;

use Encore\Admin\Traits\AdminBuilder;
use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;

/**
 *
 * Class Category
 * @package App\Models\Shoping
 */


class Category extends Model
{
  //
  use ModelTree, AdminBuilder;
  protected $table="shoping_categories";
  public function __construct(array $attributes = [])
  {
    parent::__construct($attributes);
    $this->setTitleColumn("name");
  }
}

Migrate files


class CreateCategoriesTable extends Migration
{
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('shoping_categories', function (Blueprint $table) {
      $table->increments('id');
      $table->integer('parent_id')->unsigned()->nullable();
      $table->string('name');
      $table->string('description')->nullable();
      $table->integer('order')->unsigned();
      $table->timestamps();
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::dropIfExists('shoping_categories');
  }
}

Generation controller


php artisan admin:make CategoriesController --model=App\Models\Shoping\Category

app/Admin/Controllers/CategoriesController.php

use App\Models\Shoping\Category;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
use Encore\Admin\Show;
use Encore\Admin\Tree;
use Encore\Admin\Widgets\Box;

class CategoriesController extends AdminController
{

  public function index(Content $content)
  {
    return $content->title($this->title)
      ->Description ("classification list")
      ->row(function (Row $row) {
        $row->column(6, $this->treeView()->render());
        $row->column(6, function (Column $column) {
          $form = new Form();
          $form - > select ('parent_id ',' parent class name ') - > Options (category:: selectoptions());
          $form->text('name', __('Name'));
          $form->text('description', __('Description'));
          $form - > number ('order ',' sort sequence number ') - > Default (0);
          $column->append((new Box(trans('admin.new'), $form))->style('success'));
        });

      });

  }

  protected function treeView()
  {
    return Category::tree(function (Tree $tree) {
      $tree->disableCreate();
      return $tree;
    });
  }

Add route

app/admin/routes.php


$router->resource('categories',CategoryController::class);

The above is the whole content of this article. I hope it will be helpful to your study, and I hope you can support developpaer.