4
0
Fork 0
dcat-admin/packages/keywords/src/Http/Admin/KeywordsController.php

98 lines
2.7 KiB
PHP

<?php
namespace Peidikeji\Keywords\Http\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Show;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Peidikeji\Keywords\Models\Keywords;
class KeywordsController extends AdminController
{
protected $translation = 'peidikeji.dcat-admin-extension-keywords::keywords';
public function list(Request $request)
{
$query = Keywords::filter($request->all());
$query->select(['id', 'name as text']);
if ($request->filled('_paginate')) {
$list = $query->paginate();
} else {
$list = $query->get();
}
return $list;
}
protected function grid()
{
return Grid::make(new Keywords(), function ($grid) {
$grid->column('name')->tree();
$grid->column('key');
$grid->column('value');
$grid->enableDialogCreate();
$grid->quickSearch(['name', 'type_key', 'key']);
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Keywords(), function (Show $show) {
$show->field('id');
$show->field('key');
$show->field('name');
$show->field('value');
$show->field('parent_id');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Keywords(), function (Form $form) {
$form->select('parent_id')->ajax(admin_url('api/keywords?'.http_build_query(['_paginate' => 1, 'parent_id' => '0'])))->model(Keywords::class, 'id', 'name');
$unique = Rule::unique((new Keywords())->getTable());
if ($form->isEditing()) {
$unique->ignore($form->getKey());
}
$form->text('key')->required()->rules([$unique])->help('不能重复');
$form->text('name')->required();
$form->text('value');
$form->hidden('type_key');
$form->hidden('level')->default(1);
$form->saving(function (Form $form) {
if ($form->parent_id) {
$parent = Keywords::findOrFail($form->parent_id);
$form->type_key = $parent->key;
$form->level = $parent->level + 1;
} else {
$form->parent_id = 0;
}
if ($form->isEditing()) {
Keywords::where('parent_id', $form->getKey())->update(['type_key' => $form->key]);
}
});
});
}
}