您好,我在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
最佳答案
从Laravel 5.6开始,验证器明确检查另一个值是否不为null。
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