在laravel.com网站上的文档中,我找不到validate()
和validated()
函数之间的不同定义。
但是在Validator
接口文件中,我阅读了该函数的注释,如下所示:
/**
* Run the validator's rules against its data.
*
* @return array
*/
public function validate();
/**
* Get the attributes and values that were validated.
*
* @return array
*/
public function validated();
我确实理解这些注释,但是当我编写代码并测试两个功能时,没有发现任何区别。两者似乎起着相同的作用:
那么,Laravel 5.8中这两个函数有什么区别?
在我的情况下,我按以下方式使用验证,因为验证失败后,我不想将用户重定向到他们的上一页。
$validator = validator($array_data, $array_rules, $array_message);
if ($validator->fails()) {
// Do something
} else {
$validated_data = $validator->validate();
// Here I am not sure if I should use the validated() function, because I do not see the difference between these two functions.
// $validated_data = $validator->validated();
}
答案 0 :(得分:2)
至少在目前看来,使用这两种方法都是安全的。 Here's the source for validate()
:
public function validate()
{
if ($this->fails()) {
throw new ValidationException($this);
}
return $this->validated();
}
如您所见,返回值是validated()
的结果。
也就是说,我个人将使用validate()
进行验证,并使用validated()
来获取经过验证的数据。这样可以避免将来对validate()
函数的潜在更改(例如,如果更改为返回true / false的话),并使代码的可读性更高。