laravel-admin利用ModelTree實現對分類信息的管理

生成模型和遷移文件php

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

app/Models/Shoping/Category.phpapp

<?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");
    }
}

遷移文件ui

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

生成控制器this

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

app/Admin/Controllers/CategoriesController.phpspa

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("分類列表")
            ->row(function (Row $row) {
                $row->column(6, $this->treeView()->render());
                $row->column(6, function (Column $column) {
                    $form = new Form();
                    $form->select('parent_id', "父類名稱")->options(Category::selectOptions());
                    $form->text('name', __('Name'));
                    $form->text('description', __('Description'));
                    $form->number('order', '排序序號')->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;
        });
    }

添加路由
app/admin/routes.phpcode

$router->resource('categories',CategoryController::class);
相關文章
相關標籤/搜索