isMethod('POST')) {
$data = $request->input('users');
// 1.控制器的验证演示 Controller中 use ValidatesRequests 就可以直接调用;
// blade中HTML中form表单中name的传值演示
//
//
$this->validate($request,[
// 以下正则验证都是自己随意编写的并没有严格去验证,如需要严格的请自行编写或百度,
//#此处只为重点讲Laravel可用验证用法
//required必须输入 unique 唯一(在users表中u_mobile[手机号]为唯一,不
//允许重复,regex表达式验证)
//此处要用多个条件验证和regex正则建议采用[]形式中间用逗号分隔
'users.u_mobile' => [
'required',
'unique:users',
'regex:/^1[3|4|5|7|8][0-9]{9}$/',
],
// 如果是一维数组直接'u_mobile'就可以了;
// 编辑过程中验证唯一示例如:
//'users.u_mobile'=>['required',
//Rule::unique('users')->ignore($user->id),
//'regex:/^1[3|4|5|7|8][0-9]{9}$/'],
// $user为查出的用户对象,ignore是为了强迫Unique规则忽略指定ID($user->id)
//再进行判断唯一,
//如果不是在控制器中使用validate验证你可以采用request('id')来获取指定id,
//request为一个辅助函数很实用
'users.u_qq' => ['required','regex:/^[1-9][0-9]{4,}$/'],
// QQ号 还可采用简写 'users.u_qq' => 'required|regex:/^[1-9][0-9]{4,}$/',
'users.u_email' => [
'required',
'unique:users',
'regex:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/',
],
// 大概的邮箱验证
'u_gender' => 'required|in:1,2',
// in 的用法用户性别只能输入1和2(男/女) 此处采用中划线的形式验证
// 如果文字也可以设置为 'required|in:男,女'
'users.u_nickname' => [
'required',
'regex:/^[_\w\d\x{4e00}-\x{9fa5}]{3,20}$/iu',
],
// 随意写的用户名验证
/*****以下开始重点演示可用的验证用法,
* 有些命名属性和users几乎无什么关联了,重点看验证规则写法,其它的并不重要***
*/
'salary' => 'required|integer|min:1000',
// 工资 integer必须为整数,但是数字必须不能超过2147483647否则它将判断为“不是整数”,
// min最小值为1000
// nullable 允许输入为空,
// required_if如果用户性别选择了为1那么input中属性name="name"输入框就必须要填写
'users.name' => 'nullable|required_if:u_gender,1|string|between:1,10',
// between 之间(包括1和10) 姓名必须在字数1位和10位之间
'tel' => [
'nullable',
'regex:/^((0\d{2,3}-?)?\d{7,8})|(1[3-9]\d{9})$/',
],
// 联系电话(座机号和手机号都可以),输入可以为空,但有输入值时就必须按照正则验证
'users.id_no' => [
'required',
'regex:/(^\d{17}[0-9xX]{1}$)|(^\d{14}[0-9xX]{1}$)/',
],
// 身份证号码验证(包括15位的验证)
'users.age' => ['nullable','integer','regex:/^[1-9][0-9]?$/'],
//年龄 也可以尝试中划线形式:'nullable|integer|regex:/^[1-9][0-9]?$/'
// 余额 numeric必须为数字,max最大值为922337203685477
// 但是max设置为9223372036854771
//但用户输入9223372036854772、9223372036854773 也可以验证通过
// max设置为9223372036854775807 但输入 9223372036854775808、
//9223372036854775809
// 还是会通过 所以max还有些缺陷请谨慎使用!
// 同样的问题在 between用于数字类型的精确的范围之间验证也会出现问题,
//如:between:1,9223372036854771
// 输入9223372036854773 也会通过,也需要注意!!!
'balance' => 'nullable|numeric|min:1|max:922337203685477',
//max如果是数字类型,最大为922337203685477内能精确验证,超过了可能出现问题.
//html模版如: 互联网
// 建筑
'industry_nos' => 'required|array',
// 行业 array 验证的字段必须是一个php数组
'industry_nos.*' => 'integer|distinct|between:1,6',
// 整数必须在1和6之间 distinct 指定的字段不能有任何重复值
'telephone' => ['required_without:id_no','regex:/^1[3-9]\d{9}$/'],
// 手机号 required_without 只要id_no字段不存在,telephone那么就必须存在且不能为空
'id_no' => [
'required_without:telephone',
'regex:/(^\d{17}[0-9xX]{1}$)|(^\d{14}[0-9xX]{1}$)/',
],
// 身份证号码 只要telephone不存在,那么id_no就必须存在不能为空
//html模版如: 密码二次确认
//
//
'password' => 'required|min:6|confirmed',
// confirmed 验证的字段必须和password_confirmation 保持一样否则就会验证不成功
'password_confirmation' => 'required|min:6',
// password_confirmation会验证和confirmed一致
'pics' => 'required|json|not_in:[]',
// json必须为有效的json字符串,not_in不能为包含给定的值[]
'birthday' => 'nullable|date',
// 验证的字段值必须是通过PHP函数strtotime校验的有效日期
'start_date' => 'nullable|date_format:Y-m-d',
//开始时间 date_format 验证的字段必须与给定的时间格式相匹配
'amount' => ['required','numeric','regex:/^\d{1,14}$/'],
// 正则允许的最大为: 99999999999999,超过即为不合法
//msyql bigint带符号的最大值为9223372036854775807,
//但php中如果位数超过14将采用科学计数法如果采用max不太合适,
//所以先默认使用上面的正则验证方法
],[
'required' => ':attribute为必填项',//:attribute 字段占位符表示字段名称
'regex' => ':attribute格式不正确',
'unique' => ':attribute已经存在',
'integer' => ':attribute必须为整数',
'min' => ':attribute不能小于6位',
'email' => ':attribute格式不正确',
'in' => ':attribute必须选择',
'max' => ':attribute大于了10位',
// 此处开始省略..就不再继续编写了,写法同上面都差不多,自行编写即可
],[
'users.u_mobile' => '手机号码', //指定字段名称
'users.u_qq' => 'QQ号码',
'users.u_email' => '联系邮箱',
'u_gender' => '用户性别',
'users.u_nickname' => '用户昵称',
// 此处开始省略..就不再继续编写了,写法同上面都差不多,自行编写即可
]);
// 2. validator类验证演示---------------
/*$validator=Validator::make($request->input(),[
'users.u_mobile'=>['required','unique:users',
'regex:/^1[3|4|5|7|8][0-9]{9}$/'],//如果是一维数组直接'u_mobile'就可以了;
'users.u_qq'=>['required','regex:/^[1-9][0-9]{4,}$/'],
'users.u_email'=>'required|unique:users|email',
'users.u_gender'=>'required|in:0,1,2',
'users.u_nickname'=>['required',
'regex:/^[_\w\d\x{4e00}-\x{9fa5}]{3,20}$/iu'],
],[
'required'=>':attribute为必填项',//:attribute 字段占位符表示字段名称
'regex'=>':attribute格式不正确',
'unique'=>':attribute已经存在',
'integer'=>':attribute必须为整数',
'min'=>':attribute不能小于6位',
'email'=>':attribute格式不正确',
'in'=>':attribute必须选择',
'max'=>':attribute大于了10位',
],[
'users.u_mobile'=>'手机号码', //指定字段名称
'users.u_qq'=>'QQ号码',
'users.u_email'=>'联系邮箱',
'users.u_gender'=>'用户性别',
'users.u_nickname'=>'用户昵称',
]);
if($validator->fails()){
abort(422, $validator->errors()->first());
}*/
}
}
}
可以研究下框架中验证类的源码: \vendor\laravel\framework\src\Illuminate\Validation\Concerns\ValidatesAttributes.php
文章地址: https://blog.csdn.net/websites/article/details/89876884