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

Nee*_*eel 19 validation laravel laravel-validation laravel-5.3

由于将laravel从5.1升级到5.3,我在验证方面遇到了一些奇怪的问题.

当我发布这样的数据时:

firstName    null
Run Code Online (Sandbox Code Playgroud)

验证规则如下:

$validator = Validator::make($postData, [
              'firstName'           => 'string|max:255',
              'lastName'            => 'string|max:255'
            ]);
Run Code Online (Sandbox Code Playgroud)

上面的消息失败了"The XYZ must be a string.".我不明白的是:

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

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

  3. 为什么在根本没有发送参数时验证失败?(就像lastName根本没有张贴的那样)

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

Ale*_*nin 57

添加nullable规则:

'firstName' => 'string|max:255|nullable',
'lastName' => 'string|max:255|nullable'
Run Code Online (Sandbox Code Playgroud)

验证领域可能是null.这在验证原语(如字符串和可包含null值的整数)时特别有用.


Pat*_*Nox 9

当您想要某些东西是必需的但值本身可以为空时,例如空字符串。

Validator::make($postData, [
          'firstName'           => 'present|string|max:255|nullable',
          'lastName'            => 'present|string|max:255|nullable'
        ]);
Run Code Online (Sandbox Code Playgroud)

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