Laravel表单验证方法之一,与其他表单验证方法差别在于,只是调用Validator门面方法,自定义性比较强,可在控制器也可以在模型层验证,需要自己设置验证逻辑、错误信息,如果有返回也需要自己设定。
目录
创建验证器
不想在请求上使用 validate 方法,可以通过 Validator facade 手动创建一个验证器示例。用 Validator facade 上的 make 方法创建一个验证器示例:
引用:
use Illuminate\Support\Facades\Validator;
验证器实例:
$data = request()->input()
$rules = array(
'name' => 'required',
'desc' => 'required',
'iden' => 'required|unique:score_config',
'type' => 'required',
'score' => 'required',
'state' => 'required'
);
$validator = Validator::make($data, $rules);
传给 make 方法的第一个参数是需要验证的数据。第二个参数则是该数据的验证规则。
自定义错误提示
如果需要自定义错误提示,可以将自定义信息作为第三个参数传递给 Validator::make 方法:
$messages = array(
'name.required' => '请输入功能名称!',
'desc.required' => '请输入主节点!',
'iden.required' => '请输入节点标识!',
'iden.unique' => '该功能节点已存在!',
'type.required' => '请选择给与方!',
'score.required' => '请输入积分!',
'state.required' => '请选择状态!'
);
$validator = Validator::make($data, $rules, $messages);
自动重定向
如果想使用 validates 方法提供的自动重定向,那么可以在现有的验证器上调用 validate 方法。如果验证失败,用户将会自动重定向。AJAX 请求,则会返回 JSON 格式的响应。
$validator = Validator::make($data, $rules, $messages)->validate();
处理错误信息
是否有错误,返回false 或 true。
$validator->fails();
通过 Validator 实例调用 errors 方法,它拥有各种方便的方法处理错误信息。自动提供给所有视图的 $errors 变量,也是 MessageBag 类的一个实例。
$validator->errors();
打印后结构如下:
查看错误的第一个提示
$validator->errors()->first();
查看特定字段错误的第一个提示
$validator->errors()->first('iden');
判断是否有错误,并输出错误
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
print_r($validator->errors()->first());die;
}
// 验证通过 数据入库
总结
与其他表单验证方法差别在于,只是调用Validator门面方法。在项目中限制比较小,可以适应更多应用场景。