由于将laravel从5.1升级到5.3,我在验证方面遇到了一些奇怪的问题。
当我发布这样的数据时:
firstName null
验证规则是这样的:
$validator = Validator::make($postData, [
'firstName' => 'string|max:255',
'lastName' => 'string|max:255'
]);
上述内容因"The XYZ must be a string."
之类的消息而失败。我不明白的是:
为什么验证在未设置为required
时失败?
意思是,它应该忽略它,如果值是,则不抛出错误
空了,对吗?
如果将值设置为null
,为什么验证失败?
为什么在根本没有发送参数时验证失败?
(如lastName
完全没有发布)
Laravel 5.3验证中有什么变化吗?
答案 0 :(得分:49)
添加nullable
规则:
'firstName' => 'string|max:255|nullable',
'lastName' => 'string|max:255|nullable'
验证字段可能为
null
。这在验证原语(例如可包含null
值的字符串和整数)时特别有用。
答案 1 :(得分:1)
当您想要必需但值本身可以为空时(如空字符串)。
Validator::make($postData, [
'firstName' => 'present|string|max:255|nullable',
'lastName' => 'present|string|max:255|nullable'
]);
在“注释”之类的场景中很有用,可以通过从其所有文本中删除输入字段并点击保存来清空它。