目录
▸
入门
简介
安装
1.x升级指南
版本升级
快速开始
开发前必读
主题与颜色
静态资源
视图与自定义页面
多应用(多后台)
JS组件
常见问题
Laravel Octane
▸
数据表格
基本使用
列的使用和扩展
列的显示和扩展
行的使用和扩展
工具栏
树状表格
组合表头
数据来源以及查询条件
关联关系
查询过滤
列过滤器
快捷搜索
规格筛选器
数据导出
快捷创建
行内编辑
事件
字段翻译
数据软删除
头部和脚部
表格异步渲染
▸
数据表单
基本使用
图片/文件上传
字段的使用
字段扩展
数据源
表单弹窗
关联关系
JSON表单
分步表单
表单验证
工具表单
事件以及表单响应
初始化
表单布局
字段翻译
字段动态显示
▸
数据详情
基本使用
字段显示
关联关系
字段显示扩展
初始化
字段翻译
▸
模型树
基本使用
▸
数据仓库
基本使用
▸
动作
基本使用
数据表格
数据表单
数据详情
模型树
▸
多语言
基本使用
▸
开发扩展
扩展基本使用
开发扩展
▸
页面组件
异步加载
图表
数据统计卡片
模态窗(Modal)
工具表单
下拉菜单
单/复选框
选项卡
警告框
提示窗
Markdown
卡片
▸
区块
区块基本使用
▸
动作以及表单响应
动作以及表单响应
▸
权限控制
权限控制
▸
菜单
菜单基本使用
▸
帮助函数
帮助函数
▸
开发工具
基本使用
▸
自定义登陆认证
自定义登录
▸
自定义头部导航
自定义头部导航条
▸
更新日志
BETA版本更新日志
更新日志
内容导航
1.x
2.x
表单验证
创建时间:2024-06-26 14:05:01 / 更新时间:2024-06-26 14:05:01
# 表单验证 ### rule `model-form`使用laravel的验证规则来验证表单提交的数据: ```php $form->text('title')->rules('required|min:3'); // 复杂的验证规则可以在回调里面实现 $form->text('title')->rules(function (Form $form) { // 如果不是编辑状态,则添加字段唯一验证 if (!$id = $form->model()->id) { return 'unique:users,email_address'; } }); ``` 也可以给验证规则自定义错误提示消息: ```php $form->text('code')->rules('required|regex:/^\d+$/|min:10', [ 'regex' => 'code必须全部为数字', 'min' => 'code不能少于10个字符', ]); ``` 如果要允许字段为空,首先要在数据库的表里面对该字段设置为`NULL`,然后 ```php $form->text('title')->rules('nullable'); ``` 更多规则请参考[Validation](https://laravel.com/docs/5.5/validation)。 ### creationRules 此方法用法和`Form\Field::rule`用法完全一致,不同的是此方法只有在新增数据时才有效。 > {tip} 如果调用了`creationRules`方法,则`rule`方法设置的验证规则将会被忽略。 ### updateRules 此方法用法和`Form\Field::rule`用法完全一致,不同的是此方法只有在更新数据时才有效。 > {tip} 如果调用了`updateRules`方法,则`rule`方法设置的验证规则将会被忽略。 ## responseValidationMessages 通过`Form::responseValidationMessages`方法可以返回自定义验证错误信息,并中断后续逻辑,用法如下: ```php // 编辑提交时是“PUT”方法 if (request()->getMethod() == 'PUT') { if (...) { // 你的验证逻辑 $form->responseValidationMessages('title', 'title格式错误'); // 如有多个错误信息,第二个参数可以传数组 $form->responseValidationMessages('content', ['content格式错误', 'content不能为空']); } } $form->text('title'); $form->text('content'); ``` 也可以在`submitted`事件中使用这个方法 ```php $form->submitted(function ($form) { if (...) { // 你的验证逻辑 $form->responseValidationMessages('title', 'title格式错误'); // 如有多个错误信息,第二个参数可以传数组 $form->responseValidationMessages('content', ['content格式错误', 'content不能为空']); } }); ``` ## 前端验证 系统继承了<a href="https://github.com/1000hz/bootstrap-validator" target="_blank">bootstrap-validator</a>进行前端表单验证,支持H5表单类型的验证。 > {tip} 不支持H5的浏览器也可以使用前端验证,系统已经做好了兼容。大部分表单都支持前端和后端验证,两者可以同时工作不冲突,少部分表单前端验证无效。 ### H5验证 #### required 必填 ```php $form->text('title')->required(); ``` #### number 只允许输入数字 ```php $form->text('age')->type('number'); ``` 限制范围 ```php // 只允许输入 10-60 范围内的数字 $form->text('age') ->type('number') ->attribute('min', 10) ->attribute('max', 60); ``` #### email 邮箱 ```php $form->email('email'); ``` #### url 链接 ```php $form->text('website')->type('url'); ``` ### 其它 #### minLength 限制字符最小长度 ```php $form->text('title')->minLength(20); // 设置错误信息 $form->text('title')->minLength(20, '最少输入20个字符'); ``` #### maxLength 限制字符最大长度 ```php $form->text('title')->maxLength(50); // 设置错误信息 $form->text('title')->maxLength(50, '不能超过50个字符'); ``` #### same 限制当前字段值必须与给定字段的值相等,常用于密码确认 ```php $form->password('password'); $form->password('password_confirm')->same('password'); // 设置错误信息 $form->password('password_confirm')->same('password', '两次密码输入不一致'); ``` ### 自定义 开发者可以通过以下方法自定义前端验证规则。 在 `app/Admin/bootstrap.php` 中添加以下代码。 ```php use Dcat\Admin\Form\Field; Field\Text::macro('len', function (int $length, ?string $error = null) { // 前端验证逻辑扩展 Admin::script( <<<'JS' Dcat.validator.extend('len', function ($el) { return $el.val().length != $el.attr('data-len'); }); JS ); // 同时添加后端验证逻辑,这个可以看需要 $this->rules('size:'.$length); return $this->attribute([ 'data-len' => $length, 'data-len-error' => str_replace( [':attribute', ':len'], [$this->label, $length], $error ?: "只能输入:len个字符" ), ]); }); ``` 使用 ```php $form->text('name')->len(10); ```
上一文章
下一文章
返回顶部
返回主页
返回文档展示页