【问题标题】:Symfony2 form: no empty choiceSymfony2 形式:没有空选项
【发布时间】:2015-03-16 22:11:03
【问题描述】:

构建一个带有选项的 Symfony2 表单,有一个选项“空值”,用于设置与空选项相关的文本。

但是,我想将我的选择字段设置为必填项,因此应该显示空值但没有选择。使用空或空约束,用户发送“”值时不会出错。这应该怎么做?

【问题讨论】:

  • 顺便说一句,您如何将您的选择字段设置为必填项 - 您是否使用表单字段属性required => true?如果您是,您应该注意这是启用 HTML5 required 属性的标志。和约束验证不一样:symfony.com/doc/current/reference/forms/types/…

标签: forms symfony constraints choice


【解决方案1】:

您可以将NotBlank() 验证约束添加到表单基础实体中的适当属性。

如何执行此操作取决于您是使用注解还是 yaml 进行验证定义。

这里有一些关于验证器的信息:

http://symfony.com/doc/current/reference/constraints/NotBlank.html

希望这会有所帮助:)

【讨论】:

  • 这个问题是这个验证器似乎不适用于选择。我还尝试了“选择”约束 => 它排除了不需要的数据,但没有空值
  • 您的选择是否来自参考表/相关实体?如果您使用实体/表单代码的一些 sn-ps 更新您的问题,我们可以尝试找出到底发生了什么。
  • 还有@Assert\Choice()验证器。
  • 不幸的是,我必须动态设置约束,即$params['constraints'][] = NotEmpty(...) 然后 $formBuilder->add('name', 'choice', $params);我注意到另一个奇怪的行为:当我将此验证器添加到文本字段时,应用了验证器(我可以使用 xdebug 看到它)但是通过选择验证器永远不会被调用...为了绕过,我尝试自己做验证器,但行为相同(仅从文本调用,而不是从选项调用)
  • @Rolintocour 你能修复非空白验证吗?
【解决方案2】:

抱歉给您带来不便,我有一个监听器覆盖了我之前为选择设置的约束,这就是为什么它没有按应有的方式工作...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 2012-06-27
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多