column(6, $this->treeView());
$row->column(6, function (Column $column) {
$form = new WidgetsForm();
$form->select('parent_id', '上级分类')->options(Category::selectOptions(function ($model) {
return $model->where('status', 1);
}, '一级分类'));
$form->text('title', '分类名称')->rules('required');
$form->select('type', '分类类型')
->options(Category::TYPES)
->when(Category::TYPE_LINK, function (WidgetsForm $form) {
$form->text('uri', '跳转地址');
})
->required();
$form->textarea('description', '分类简介')
->rules('nullable');
$form->image('cover', '封面')
->move('images/'.date('Y/m/d'))
->removable()
->uniqueName();
$form->image('label', '标签')
->move('images/'.date('Y/m/d'))
->removable()
->uniqueName();
$form->number('order', '排序')->default(0);
$form->select('template', '模板')->options(config('settings.templates'));
$form->switch('top_show', '顶部导航显示')->states()->default(0);
$form->switch('status', '显示')->states()->default(1);
$form->action(admin_url('categories'));
$column->append((new Box('新增分类', $form))->style('success'));
});
};
}
/**
* @return Tree
*/
protected function treeView()
{
return Category::tree(function (Tree $tree) {
$tree->disableCreate();
$tree->branch(function ($branch) {
if ($branch['status'] == 1) {
$payload = " ";
} else {
$payload = " ";
}
$template = $branch['template'] ?? 'list';
$payload .= " [ID:{$branch['id']}] - ";
$payload .= " {$branch['title']} ";
$payload .= " {$branch['type']} ";
$payload .= "【 {$template} 】";
$payload .= " {$branch['description']}";
return $payload;
});
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form(): Form
{
$form = new Form(new Category);
$form->select('parent_id', '上级分类')->options(Category::selectOptions(function ($model) {
return $model->where('status', 1);
}, '一级分类'));
$form->text('title', '分类名称')->rules('required');
$form->select('type', '分类类型')
->options(Category::TYPES)
->when(Category::TYPE_LINK, function (Form $form) {
$form->text('uri', '跳转地址');
})
->required()
->rules('required');
$form->textarea('description', '分类简介')->rows(4)->rules('nullable');
$form->image('cover', '封面')
->move('images/'.date('Y/m/d'))
->removable()
->uniqueName();
$form->number('order', '排序')->default(0)->help('正序优先');
$form->select('template', '模板')->options(config('settings.templates'));
$form->switch('status', '显示')->states()->default(1);
$form->switch('top_show', '顶部导航显示')->states()->default(0);
$form->saving(function (Form $form) {
if (request()->has('title')) {
if (request()->type == Category::TYPE_LINK && empty(request()->uri)) {
$error = new MessageBag([
'title' => '错误',
'message' => '外链类型必须添加外链地址',
]);
return back()->withInput()->with(compact('error'));
}
}
});
return $form;
}
public function destroy($id)
{
return $this->form()->destroy($id);
}
}