您的位置:首页 > 编程语言 > PHP开发

Laravel 验证

2016-03-17 22:40 537 查看
关于Laravel的表单验证,官方文档已经给出详细的用法,先略作总结。

Laravel的控制器基类BaseController使用ValidatesRequests trait,所以可以直接使用其validate方法进行数据验证。参数以此为\Illuminate\Http\Request request,验证规则数组,错误信息数组。每个视图都存在Illuminate\Support\MessageBagrequest,验证规则数组,错误信息数组。
每个视图都存在Illuminate\Support\MessageBag error变量,用于存储验证的错误信息。

validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])


关于ValidatesRequests的validate()方法

public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
{
$validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);

if ($validator->fails()) {
$this->throwValidationException($request, $validator);
}
}


getValidationFactory方法

protected function getValidationFactory()
{
// use Illuminate\Contracts\Validation\Factory;
return app(Factory::class);
}


Factory接口提供了4个方法

make方法返回\Illuminate\Contracts\Validation\Validator实例,

extend方法用于扩展自定义的验证规则

interface Factory
{
public function make(array $data, array $rules, array $messages = [], array $customAttributes = []);

public function extend($rule, $extension, $message = null);

public function extendImplicit($rule, $extension, $message = null);

public function replacer($rule, $replacer);
}


Validator接口提供4个方法

fails方法返bool类型,验证是否通过,

failed方法获取验证失败的规则数组,

sometimes方法当callback返回true是进行验证否则忽略验证,

after方法当验证完成时调用callback

public function fails();

public function failed();

public function sometimes($attribute, $rules, callable $callback);

public function after($callback);


综合上述,验证可以可以使用Validator门面,调用静态调用make方法获取Validator实例,通过fails方法判断是否通过验证

示例代码

$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);

if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}


检查请求是够通过验证后,可以使用withErrors方法将错误数据一次性存放到session,使用该方法时,$errors变量重定向后自动在视图间共享,从而允许你轻松将其显示给用户,withErrors方法接收一个验证器、或者一个MessageBag,又或者一个PHP数组。

关于多个表单验证表单请求验证错误信息的处理 可官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: