【问题标题】:How to have non-required validation rules in Laravel?如何在 Laravel 中有非必需的验证规则?
【发布时间】:2019-11-11 16:54:53
【问题描述】:

我正在尝试在 Laravel 5.8 中进行一些表单验证,

但即使在没有required 规则的字段上,它也会抛出错误...

例如:

request()->validate([
    'username' => ['required','alpha_num','max:40'],
    'email'   => ['email','max:100'],
]);

如果我在表单上将email 字段“留空”(不是必需的),则无法提交并显示此错误:The email must be a valid email address.

我不明白,为什么会这样?当这是 Laravel 验证的行为时,required 规则有什么用?

来自 CodeIgniter 社区,这令人困惑。

我还应该在可以为空的字段中包含nullable 规则吗?

【问题讨论】:

  • 这是因为 null 或空字符串不是有效的电子邮件地址。如果您还想接受 null,请包含 nullable

标签: php laravel


【解决方案1】:

是的,您应该在可以为空的字段中包含nullable

当我第一次使用 Symphony(Laravel 的基础)时,我发现这有点棘手。如果向字段添加验证规则,则验证规则不允许 null 值,除非该字段也标记为 nullable

您收到报告错误的原因是因为您强制 email 字段通过 email 验证规则 - 当然,如果留空则不会。

【讨论】:

  • 谢谢,那么required规则有什么用呢?
  • required 表示该字段必须存在于请求正文中。如果您完全忽略了 email 字段,您将不会收到验证错误。现在你正在提交email,但它是空的。
  • @J.Doe - 我问自己同样的问题。将您的 Symphony / Laravel 应用程序视为存在于 2 个单独的部分中会有所帮助——每个部分都不知道另一个部分。 Symphony / Laravel 允许您构建独立于 UI(前端)存在的 API(后端)——事实上,我使用 Symphony 构建了几个从未有前端表单伴随的 API。使用验证器时,您正在为后端期望接收数据的方式设置规则,并且每个验证器都会自动假定数据将存在,除非您另有指定。
猜你喜欢
  • 2023-04-02
  • 2017-12-01
  • 2016-05-13
  • 2019-12-14
  • 2021-11-25
  • 2014-01-08
  • 1970-01-01
  • 2020-06-09
  • 2016-11-26
相关资源
最近更新 更多