相关类: 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

示例代码

验证失败时, 重定向回上一个位置(表单页面), 且无任何提示

  1. $request -> validate([
  2. 'cat_name' => 'required|max:20|min:2',
  3. 'parent_id' => 'integer',
  4. 'unit' => 'required|integer'
  5. ]);

自定义错误消息

  1. $this->validate($request, [
  2. 'title' => 'bail|required|string|between:2,32',
  3. 'url' => 'sometimes|url|max:200',
  4. 'picture' => 'nullable|string'
  5. ], [
  6. 'title.required' => '标题字段不能为空',
  7. 'title.string' => '标题字段仅支持字符串',
  8. 'title.between' => '标题长度必须介于2-32之间',
  9. 'url.url' => 'URL格式不正确,请输入有效的URL',
  10. 'url.max' => 'URL长度不能超过200',
  11. ]);

显示验证失败的错误信息

如果请求输入参数没有通过给定验证规则, 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 主要的代码托管网站 进行下载
  1. 搜索关键词 laravel-lang, 找到 caouecs/laravel-lang
  2. 根据安装指示, 使用composer进行安装
    laravel-lang-install.jpg
    或前往github下载源文件 Laravel-lang
  3. 查看 laravel-lang 源文件, 查找中文目录 Laravel-lang/src/zh-CN
  4. 复制到 Laravel项目的语言支持目录 resources/lang
  5. 编辑 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' => '分类名称',  
    ],