当变量为空时,Laravel 5.3验证失败

时间:2016-11-07 12:33:21

标签: laravel validation laravel-5.3 laravel-validation

由于将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."之类的消息而失败。我不明白的是:

  1. 为什么验证在未设置为required时失败? 意思是,它应该忽略它,如果值是,则不抛出错误 空了,对吗?

  2. 如果将值设置为null,为什么验证失败?

  3. 为什么在根本没有发送参数时验证失败? (如lastName完全没有发布)

  4. Laravel 5.3验证中有什么变化吗?

2 个答案:

答案 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'
        ]);

在“注释”之类的场景中很有用,可以通过从其所有文本中删除输入字段并点击保存来清空它。