1. form 表单动态添加
参考网址:https://laravel-admin.org/docs/zh/model-form-json-fields
$form->table('column_name', function ($table) {
$table->text('key');
$table->number('value');
$table->text('desc');
});
效果图:
2. 重写edit
重写edit,但是提交前和提交后的判断都在form方法中
protected function form()
{
$form = new Form(new Sale());
$form->html('<b>基本信息</b>');
$form->text('name', '名称')->rules('required');
$form->text('address', '地址')->rules('required');
$form->text('linkman', '联系人')->rules('required');
$form->mobile('telphone', '手机号码')->rules('required|regex:/^1[34578]\d{9}$/', [
'regex' => '请输入正确的手机号码'
]);
$form->select('torch_id', '归属门店')->options($torch)->load('goods_info', '/admin/torch-users/torchGoodsInfo')->rules('required');
$form->datetime('use_time', '有效时间')->default(date('Y-m-d H:i:s'))->rules('required');
$form->divider();
$form->html('<b>推广产品</b>');
// 关联归属门店的产品权限, 编辑是才需要添加, 格式为['id' => 1, 'text' => '文字信息']
$form->multipleSelect('goods_info', '产品权限')->options(function() {
if (isset($this->torch_id)) {
$secondCategory = TorchUsers::getGoodsInfo($this->torch_id);
$list = array();
foreach($secondCategory as $k => $v) {
$list[$v['id']] = $v['text'];
}
return $list;
} else {
return [];
}
})->rules('required');
//保存前回调, 判断门店的推广数量在当前级别是否超过
$form->saving(function (Form $form) {
$torch_id = $form->torch_id;
$torch = objectToArray(DB::table('torch_users')->where('id', $torch_id)->first());
$num = $torch['store_num'];
$level_num = DB::table('torch_levels')->where('id', $torch['torch_level_id'])->value('store_num');
if ($level_num <= $num) {
$error = new MessageBag([
'title' => '提示信息',
'message' => '归属门店的推广数量已超过上限!',
]);
return back()->with(compact('error'));
}
if ($form->isEditing()) {
$id = $form->model()->id;