0
点赞
收藏
分享

微信扫一扫

DcatAdmin开发集锦(1):使用模型树


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;
});*/
});
}

}

 

举报

相关推荐

0 条评论