Contributed by
Billie Thompson
in #24442.

Symfony 4.1 将在 2018 年5月发。这是系列首篇文章,此一版 Symfony 引入的最重要功能将在本系列中进行展现。


邮件地址的验证,在开发者中是永无休止的争论之一。有一种观点认为,不可能依靠程序来真正验证,你必须要发送一封确认邮件。另外一派则认为遵守了 RFC 5322 的程序化验证对于现实世界的应用来说已经足够。

通过 Email validation constraintstrict 选项,Symfony 始终把选项交给你。当设置成 false 时, 邮件地址将通过一个简单的正则来验证。如果设为 true,则 RFC 验证会通过第三方的 egulias/email-validator 库来实施。

但是,用于验证邮件地址的正则表达式太弱了。这就是为何在 Symfony 4.1 中我们决定跟进使用 由 HTML5 完成的邮件验证 。实践中,我们不建议再使用 strict 选项,而是改用具有如下取值的 mode 选项:

  • loose: 使用简单正则来寻找最明显错误(未发现 @ 字符等等)。基本就是以前的 strict = false
  • strict: 实施遵循 RFC 的认证,需要安装 egulias/email-validator 三方库。基本就是以前的 strict = true
  • html5 使用 HTML5 协议的正则表达式,最佳平衡点的取值,提供快速可靠的验证而毋须安装外部库。

在框架中配置邮件验证

Contributed by
Christian Flothmann
in #25478.

当使用了 Symfony 中的 Validator 组件 时,你可以设置邮件地址的验证模式为全新的 email_validation_mode 选项:

1
2
3
4
5
# config/packages/framework.yaml
framework:
    validation:
        # possible values(可选值): 'loose', 'strict', 'html5'
        email_validation_mode: 'html5'