1、创建category表(必须有parent_id id title order show)字段
CREATE TABLE IF NOT EXISTS `category` (
`id` bigint(20) unsigned NOT NULL,
`parent_id` bigint(20) NOT NULL DEFAULT '0',
`order` int(11) NOT NULL DEFAULT '0',
`title` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`show` tinyint(4) NOT NULL DEFAULT '1',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2、CategoryController.php中
namespace App\Admin\Controllers;
use App\Models\Category;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Tree;
use Dcat\Admin\Widgets\Box;
use Dcat\Admin\Http\Actions\Menu\Visiable;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Widgets\Form as WidgetForm;
class CategoryController extends AdminController
{
public function index(Content $content)
{
return $content
->title(trans('admin.category'))
->description(trans('admin.list'))
->body(function (Row $row) {
$row->column(7, $this->treeView()->render());
$row->column(5, function (Column $column) {
$form = new WidgetForm();
$form->action(admin_url('category'));
$form->select('parent_id', trans('admin.parent_id'))->options(Category::selectOptions());
$form->text('title', trans('admin.title'))->required();
$form->switch('show', trans('admin.show'))->default(1);
$form->hidden('_token')->default(csrf_token());
$form->width(9, 2);
$column->append(Box::make(trans('admin.new'), $form));
});
});
}
public function form()
{
$menuModel = config('admin.database.category_model');
//$relations = $menuModel::withPermission() ? ['permissions', 'roles'] : 'roles';
return Form::make(new Category(), function (Form $form) use ($menuModel) {
$form->tools(function (Form\Tools $tools) {
$tools->disableView();
});
$form->display('id', 'ID');
$form->select('parent_id', trans('admin.parent_id'))->options(function () use ($menuModel) {
return $menuModel::selectOptions();
})->saving(function ($v) {
return (int) $v;
});
$form->text('title', trans('admin.title'))->required();
$form->switch('show', trans('admin.show'));
$form->display('created_at', trans('admin.created_at'));
$form->display('updated_at', trans('admin.updated_at'));
})->saved(function (Form $form, $result) {
$response = $form->response()->location('category');
if ($result) {
return $response->success(__('admin.save_succeeded'));
}
return $response->info(__('admin.nothing_updated'));
});
}
protected function treeView()
{
return new Tree(new Category(), function (Tree $tree) {
$tree->disableCreateButton();
$tree->disableQuickCreateButton();
$tree->disableEditButton();
$tree->actions(function (Tree\Actions $actions) {
if ($actions->getRow()->extension) {
$actions->disableDelete();
}
$actions->prepend(new Visiable());
});
/*$tree->branch(function ($branch) {
$payload = "<i class='fa {$branch['icon']}'></i> <strong>{$branch['title']}</strong>";
if (! isset($branch['children'])) {
if (url()->isValidUrl($branch['uri'])) {
$uri = $branch['uri'];
} else {
$uri = admin_base_path($branch['uri']);
}
$payload .= " <a href=\"$uri\" class=\"dd-nodrag\">$uri</a>";
}
return $payload;
});*/
});
}
}