columnId(); $grid->column('name', '模板名称'); $grid->column('code', '模板代码'); $helper->columnMessageType(); $helper->columnMessageTitle(); $grid->column('content_type', '内容类型'); $helper->columnAllowReply(); $grid->column('status', '状态')->switch(); $helper->columnCreatedAt(); $helper->columnUpdatedAt(); // 筛选器 $grid->filter(function (Grid\Filter $filter) { $helper = new FilterHelper($filter, $this); $helper->equalId(); $filter->like('name', '模板名称'); $filter->like('code', '模板代码'); $helper->equalMessageType(); $helper->likeMessageTitle(); $filter->equal('content_type', '内容类型')->select([ 'text' => '纯文本', 'html' => 'HTML', 'markdown' => 'Markdown', 'json' => 'JSON', ]); $filter->equal('status', '状态')->select([ 0 => '禁用', 1 => '启用', ]); $helper->betweenCreatedAt(); }); }); } /** * 详情页面 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new AppMessageTemplate(), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->fieldId(); $show->field('name', '模板名称'); $show->field('code', '模板代码'); $helper->fieldMessageType(); $helper->fieldMessageTitle(); $helper->fieldMessageContent(); $show->field('content_type', '内容类型'); $show->field('variables', '变量定义')->json(); $helper->fieldAllowReply(); $show->field('status', '状态')->as(function ($value) { return $value ? '启用' : '禁用'; }); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); $helper->fieldDeletedAt(); }); } /** * 表单页面 * * @return Form */ protected function form() { return Form::make(new AppMessageTemplate(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $form->text('name', '模板名称')->required()->rules('required|max:50'); $form->text('code', '模板代码')->required()->rules('required|max:50|unique:app_message_templates,code,' . $form->getKey()); $helper->selectMessageType(); $helper->textMessageTitle(); $helper->textareaMessageContent()->help('可以使用{{变量名}}格式的占位符,如{{username}}'); $form->select('content_type', '内容类型')->options([ 'text' => '纯文本', 'html' => 'HTML', 'markdown' => 'Markdown', 'json' => 'JSON', ])->default('text')->required(); $form->textarea('variables', '变量定义')->help('JSON格式,如:{"username":{"type":"string","description":"用户名"}}'); $helper->switchAllowReply(); $form->switch('status', '状态')->default(true); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); // 保存前回调 $form->saving(function (Form $form) { // 处理变量定义 if ($form->variables) { try { $variables = json_decode($form->variables, true); if (json_last_error() !== JSON_ERROR_NONE) { return $form->response()->error('变量定义不是有效的JSON格式'); } $form->variables = $variables; } catch (\Exception $e) { return $form->response()->error('变量定义处理失败: ' . $e->getMessage()); } } }); }); } }