相关类:
Illuminate\Foundation\Validation\ValidatesRequests
参考文档: [ Laravel 5.6 文档 ] 基础组件 —— 表单验证
Laravel 提供了多种方法来验证请求输入数据。默认情况下,Laravel 的控制器基类使用 ValidatesRequests 特性(trait),该特性提供了便捷方法通过各种功能强大的验证规则来验证输入的 HTTP 请求。
validate 方法
基类
App\Http\Controllers\Controller使用了ValidatesRequests特性,可以使用该特性提供的validate()方法进行验证
验证规则
所有验证规则可在 Laravel 5.6 文档 ] 基础组件 —— 表单验证 章节的
验证规则大全中查看. 不同框架的写法不同. 无需记忆.
常用验证规则
多个验证规则可以通过
|字符进行隔开
| 验证函数 | 说明 |
|---|---|
required |
不能为空 |
max |
最长255个字符 |
email |
验证邮箱是否合法 |
confirmed |
验证两个字段是否相同, 如果验证的字段是password, 则必须输入一个与之匹配的 password_confirmed 字段 |
integer |
验证字段必须是整形 |
ip |
验证字段必须是ip地址 |
numeric |
验证字段必须是数值 |
max:value |
验证字段的最大值, 必须小于等于最大值; 和字段串, 数值, 文件字段的size规则一起使用 |
min:value |
验证字段的最小值, 必须大于等于最小值; 对字符串, 数值, 文件字段而言, 和size规则使用方式一致 |
size:value |
验证字段必须有和给定值value相匹配的尺寸; 对字符串而言, value是相应的字段数目; 对数值而言, value是给定的整型值; 对文件而言, value是对应的文件字节数 |
string |
验证字段必须是字符串 |
unique:表名,字段,需要排队的ID |
无 |
示例代码
验证失败时, 重定向回上一个位置(表单页面), 且无任何提示
$request -> validate(['cat_name' => 'required|max:20|min:2','parent_id' => 'integer','unit' => 'required|integer']);
自定义错误消息
$this->validate($request, ['title' => 'bail|required|string|between:2,32','url' => 'sometimes|url|max:200','picture' => 'nullable|string'], ['title.required' => '标题字段不能为空','title.string' => '标题字段仅支持字符串','title.between' => '标题长度必须介于2-32之间','url.url' => 'URL格式不正确,请输入有效的URL','url.max' => 'URL长度不能超过200',]);
显示验证失败的错误信息
如果请求输入参数没有通过给定验证规则, Laravel 将会自动将用户重定向回上一个位置, 所有验证错误信息会自动存放到一次性 Session. 每次请求的所有视图中总是存在一个$errors 变量(Illuminate\Support\MessageBag的实例)
注意:$errors 变量会通过 web 中间件组中的 Illuminate\View\Middleware\ShareErrorsFromSession 中间件绑定到视图,如果使用了该中间件,那么 $errors 变量在视图中总是有效的,
示例代码
- 在表单提交页面中, 捕获
$error变量, 当验证失败重定向时就会输出相关的错误信息@if ($errors->any()) <h2>自动验证失败的提示信息</h2> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif输出效果转换成中文
如果要切换提示文字, 则需要有中文语言包的支持. 需要前往 Composer 主要的代码托管网站 进行下载
- 搜索关键词
laravel-lang, 找到caouecs/laravel-lang - 根据安装指示, 使用composer进行安装

或前往github下载源文件 Laravel-lang - 查看 laravel-lang 源文件, 查找中文目录
Laravel-lang/src/zh-CN - 复制到 Laravel项目的语言支持目录
resources/lang - 编辑 lavavel 的 app配置文件
config/app.php。将本地化改成中文,保存后即生效//'locale' => 'en', 'locale' => 'zh-CN',自定义验证失败的提示信息
验证失败的提示信息以
key => value的形式保存于zh-CN / validation.php文件
示例代码
自定义提示信息的修改案例
// required验证失败时, 提示 "属性名 是不能为空的啦, 乖仔。" 'required' => ':attribute 是不能为空的啦, 乖仔。',自定义属性描述的修改案例
// cat_name 的默认描述为 cat name , 可修改成自定义描述 'attributes' => [ 'cat_name' => '分类名称', ],
