98 lines
2.7 KiB
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]);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|