您好,我在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

10-08 16:16