form->text($field, $label) ->required() ->rules('required|min:3|max:20|unique:users,username,{{id}}') ->help('用户名长度为3-20个字符,且必须唯一'); } /** * 添加密码输入 * * 复用价值:高 - 统一处理密码输入,包括哈希处理 * * @param string $field 字段名 * @param string $label 标签名 * @param bool $required 是否必填 * @return Field\Password */ public function passwordPassword(string $field = 'password', string $label = '密码', bool $required = false): Field\Password { $field = $this->form->password($field, $label) ->help('密码长度至少为6个字符,不修改请留空') ->saving(function ($value) { if ($value) { return Hash::make($value); } }); if ($required) { $field->required()->rules('required|min:6'); } else { $field->rules('nullable|min:6'); } return $field; } /** * 添加用户状态选择 * * 复用价值:高 - 统一处理用户状态的选择,使用枚举类型 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Radio */ public function radioStatus(string $field = 'status2', string $label = '状态'): Field\Radio { return $this->form->radio($field, $label) ->options(STATUS2::getNames()) ->default(STATUS2::Normal->value); } /** * 添加用户头像上传 * * 复用价值:高 - 统一处理用户头像上传,包括图片处理 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Image */ public function imageAvatar(string $field = 'avatar', string $label = '头像'): Field\Image { return $this->form->image($field, $label) ->autoUpload() ->uniqueName() ->help('建议上传正方形图片,系统会自动处理'); } /** * 添加用户手机号输入 * * 复用价值:高 - 统一处理用户手机号输入,包括验证规则 * * @param string $field 字段名 * @param string $label 标签名 * @param bool $required 是否必填 * @return Field\Text */ public function textPhone(string $field = 'phone', string $label = '手机号', bool $required = false): Field\Text { $field = $this->form->text($field, $label) ->help('请输入有效的手机号码'); if ($required) { $field->required()->rules('required|regex:/^1[3-9]\d{9}$/'); } else { $field->rules('nullable|regex:/^1[3-9]\d{9}$/'); } return $field; } /** * 添加用户邮箱输入 * * 复用价值:高 - 统一处理用户邮箱输入,包括验证规则 * * @param string $field 字段名 * @param string $label 标签名 * @param bool $required 是否必填 * @return Field\Email */ public function emailEmail(string $field = 'email', string $label = '邮箱', bool $required = false): Field\Email { $field = $this->form->email($field, $label) ->help('请输入有效的邮箱地址'); if ($required) { $field->required()->rules('required|email'); } else { $field->rules('nullable|email'); } return $field; } /** * 添加用户基本信息表单组 * * 复用价值:高 - 提供完整的用户基本信息表单组,包括用户名、密码、状态等 * * @param bool $isCreate 是否为创建表单 * @return void */ public function addUserBasicFields(bool $isCreate = false): void { $this->form->display('id', 'ID'); $this->textUsername(); if ($isCreate) { $this->passwordPassword('password', '密码', true); } else { $this->passwordPassword(); } $this->form->text('nickname', '昵称') ->help('用户昵称,可以与用户名不同'); $this->imageAvatar(); $this->radioStatus(); } /** * 添加用户联系信息表单组 * * 复用价值:高 - 提供完整的用户联系信息表单组,包括手机号、邮箱、微信号等 * * @return void */ public function addUserContactFields(): void { $this->form->divider('联系信息'); $this->textPhone(); $this->emailEmail(); $this->form->text('wx_id', '微信号') ->help('用户微信号'); } /** * 添加用户安全信息表单组 * * 复用价值:高 - 提供完整的用户安全信息表单组,包括安全密码等 * * @return void */ public function addUserSecurityFields(): void { $this->form->divider('安全信息'); $this->form->password('secret_password', '安全密码') ->help('用户安全密码,用于重要操作验证,不修改请留空') ->saving(function ($value) { if ($value) { return Hash::make($value); } }); } }