Laravel 当其他属性为 null 时验证 'different' 失败
Laravel validation 'different' fails when other attribute is null
您好,我在 different 验证方面遇到了问题。
我有 2 个可以为空的变量。我想要实现的是,只要变量存在,就强制它具有恰好 5 位数字并且不具有相同的值。
这些是我设定的规则:
'zip_departure' => 'nullable|digits:5',
'zip_arrival' => 'nullable|different:zip_departure|digits:5',
问题是当我将 zip_departure
设置为 null
时,它会抛出一个验证错误,指出两个参数不能具有相同的值。但是如果我 dd()
他们有两个变量:
'zip_departure': null
'zip_arrival': '28100'
我在这里错过了什么?
我正在使用 Laravel 5.6
试试这个代码
'zip_departure' => 'bail|nullable|digits:5',
'zip_arrival' => 'bail|nullable|required_with:zip_departure|different:zip_departure|digits:5',
保释是为了:在第一次验证失败后停止运行验证规则
required_with 用于:验证中的字段必须存在,并且仅当任何其他指定字段存在时才不为空。
希望这对您有所帮助...
从 Laravel 5.6 开始,验证器明确检查另一个值是否不为空。
public function validateDifferent($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'different');
foreach ($parameters as $parameter) {
$other = Arr::get($this->data, $parameter);
if (is_null($other) || $value === $other) {
return false;
}
}
}
framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php:432
这就是 different:var2
有效而 different:var1
无效的原因。
从 Lravel 5.8 及更高版本开始,这是 fixed
您好,我在 different 验证方面遇到了问题。
我有 2 个可以为空的变量。我想要实现的是,只要变量存在,就强制它具有恰好 5 位数字并且不具有相同的值。
这些是我设定的规则:
'zip_departure' => 'nullable|digits:5',
'zip_arrival' => 'nullable|different:zip_departure|digits:5',
问题是当我将 zip_departure
设置为 null
时,它会抛出一个验证错误,指出两个参数不能具有相同的值。但是如果我 dd()
他们有两个变量:
'zip_departure': null
'zip_arrival': '28100'
我在这里错过了什么?
我正在使用 Laravel 5.6
试试这个代码
'zip_departure' => 'bail|nullable|digits:5',
'zip_arrival' => 'bail|nullable|required_with:zip_departure|different:zip_departure|digits:5',
保释是为了:在第一次验证失败后停止运行验证规则
required_with 用于:验证中的字段必须存在,并且仅当任何其他指定字段存在时才不为空。
希望这对您有所帮助...
从 Laravel 5.6 开始,验证器明确检查另一个值是否不为空。
public function validateDifferent($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'different');
foreach ($parameters as $parameter) {
$other = Arr::get($this->data, $parameter);
if (is_null($other) || $value === $other) {
return false;
}
}
}
framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php:432
这就是 different:var2
有效而 different:var1
无效的原因。
从 Lravel 5.8 及更高版本开始,这是 fixed