您好,我在different验证方面遇到了麻烦。
我有2个可以为null的变量。我要实现的是,只要存在变量,就将其强制为正好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
答案 0 :(得分:1)
从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
答案 1 :(得分:0)
尝试此代码
'zip_departure' => 'bail|nullable|digits:5',
'zip_arrival' => 'bail|nullable|required_with:zip_departure|different:zip_departure|digits:5',
保释金用于:第一次验证失败后停止运行验证规则
required_with的目的是:仅当存在任何其他指定字段时,验证字段才必须存在且不为空。
希望这对您有帮助...