1、使用控制器的 validate 方法进行参数验证
场景一:前后端未分离
/*** 保存一篇新的博客文章。** @param Request $request* @return Response*/
public function store(Request $request)
{$this->validate($request, ['title' => 'required|unique:posts|max:255','body' => 'required',]);// 文章内容是符合规则的,存入数据库
}
若验证失败参考:Validation - Laravel 中文网 为 Web 工匠创造的 PHP 框架
场景二:前后端分离
public function store(Request $request)
{try{$validatorData = $request->validate(['admin_username' => ['required', 'unique:admin_users', 'max:20'],'admin_pwd' => ['required', 'max:70'],'admin_tel' => ['required', 'unique:admin_users', 'size:11'],'auth_id' => ['required'],]);} catch (\Exception $exception){dump("exception");dump($exception->getMessage());//显示一条错误消息(and x more error)dd($exception->errors());//一个包含所有错误消息的数组}dd($validatorData);//验证通过后的数据// 文章内容是符合规则的,存入数据库
}
验证失败:
使用try{}catch(){}捕获错误消息
验证通过:
2、手动创建验证器实例进行验证
2.1 使用默认的验证信息
use Illuminate\Support\Facades\Validator;public function store(Request $request)
{$rules = ['admin_username' => ['required', 'unique:admin_users', 'max:20'],'admin_pwd' => ['required', 'max:70'],'admin_tel' => ['required', 'unique:admin_users', 'size:11'],'auth_id' => ['required'],];$validator = Validator::make($request->all(), $rules);if ($validator->fails()) {dump($validator->attributes());//需要验证属性dump($validator->valid());//验证通过的(有效的)dump($validator->messages());//所有的错误消息dump($validator->getMessageBag());//所有的错误消息(同上)dd($validator->errors());//所有的错误消息(同上)}dd($validator);// 文章内容是符合规则的,存入数据库
}
2.2 使用自定义的验证信息
举个栗子
/*** 添加一个新的用户。** @param Request $request* @return Response*/
public function add(Request $request)
{$rules = ['admin_username' => ['required', 'unique:admin_users', 'max:20'],'admin_pwd' => ['required', 'max:70', Password::min(6)->numbers()->letters()],'admin_tel' => ['required', 'unique:admin_users', 'size:11'],'auth_id' => ['required'],'admin_realname' => ['required'],];$messages = ['admin_username.required'=>':attribute 必填','admin_username.unique'=>':attribute 已存在','admin_username.max:20'=>':attribute 最多20个字符','admin_pwd.required'=>':attribute 必填','admin_pwd.max'=>':attribute 最多70个字符','admin_pwd'=>':attribute 最少6位数,且必须包含字母和数字','admin_tel.required'=>':attribute 必填','admin_tel.unique'=>':attribute 已存在','admin_tel.size'=>':attribute 必须11位数','auth_id.required'=>':attribute 必选','admin_realname.required'=>':attribute 必填',];$attributes = ['admin_username'=>"用户名",'admin_pwd'=>"密码",'admin_tel'=>"手机号",'auth_id'=>"角色",'admin_realname'=>"真实姓名",];$validator = Validator::make($request->all(), $rules, $messages, $attributes);if ($validator->fails()) {return $this->outputError(info: $validator->errors());}$data = $validator->getData();//获取验证的数据$data = $validator->valid();/获取验证通过的(有效的)数据// 文章内容是符合规则的,存入数据库
}