你好,我在不同验证方面遇到了麻烦。
我有两个可以为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
发布于 2019-10-10 13:39:37
从Laravel5.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及更高版本中,这是固定
发布于 2018-10-21 03:35:59
试试这段代码
'zip_departure' => 'bail|nullable|digits:5',
'zip_arrival' => 'bail|nullable|required_with:zip_departure|different:zip_departure|digits:5',
保释用于:在第一次验证失败后停止运行验证规则。
required_with用于:验证中的字段必须是存在的,而不是只有在存在任何其他指定字段时才为空。
希望这能帮上忙。
https://stackoverflow.com/questions/52763160
复制相似问题