【问题标题】:Laravel 5.3 Validation Fails when Variables are Null当变量为空时,Laravel 5.3 验证失败
【发布时间】:2017-03-20 19:17:03
【问题描述】:

自从将 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根本没有发帖)

Laravel 5.3 验证有什么变化吗?

【问题讨论】:

    标签: laravel validation laravel-5.3 laravel-validation


    【解决方案1】:

    添加nullable规则:

    'firstName' => 'string|max:255|nullable',
    'lastName' => 'string|max:255|nullable'
    

    正在验证的字段可能是null。这在验证可以包含 null 值的原语(例如字符串和整数)时特别有用。

    【讨论】:

    • 完美。那解决了它。谢谢!一旦允许,我将在 10 分钟内接受您的回答。一个快速的问题,这在 laravel 5.3 中是否发生了变化?因为我在 5.1 中没有遇到这个问题,而且我从未在验证规则中添加 nullable。
    • @Neel 在 5.2 中看不到任何 nullable 规则的代码。它仅在 5.3 中。所以我猜他们在验证中改变了一些东西。
    • 这是有道理的。非常感谢@Alexey 指出这一点。很有帮助!
    【解决方案2】:

    当您希望某些内容是必需,但值本身可以为空,例如空字符串。

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 2020-11-22
      • 2013-11-26
      • 2014-08-17
      • 2017-04-28
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      相关资源
      最近更新 更多