【问题标题】:Symfony validation does not show messagesSymfony 验证不显示消息
【发布时间】:2016-07-15 11:13:11
【问题描述】:

尝试在 Symfony 中通过注释设置自定义消息进行验证。

这就是我所拥有的……

config.yml

validation:      { enabled: true, enable_annotations: true }

在实体中...

/**
 * @ORM\Column(type="string")
 * @Assert\Length(
 *      min = 5,
 *      max = 6,
 *      minMessage = "Your first name must be at least {{ limit }} characters long",
 *      maxMessage = "Your first name cannot be longer than {{ limit }} characters"
 * )
 */
private $nombre;

所以我尝试通过仅用 1 个字符填充输入来触发 minMessage。它应该显示 minMessage 但它为所有字段显示相同的消息(下图),即使对于那些在实体中没有注释的字段也是如此。

我做错了什么?

【问题讨论】:

    标签: validation symfony twig


    【解决方案1】:

    您定义的这些验证只是服务器端验证。您在屏幕截图中显示的消息是由浏览器引起的 html5 验证消息。

    <input type="something" required="required" name="...">
    

    我不懂西班牙语,所以我猜是您呈现的字段不是文本类型,并且消息告诉您输入的值的格式不正确。 IE。数字类型字段中的文本。 (或者在这种情况下可能设置了字段的 minlength 属性)

    要禁用表单的 html5 验证,试试这个

    <form novalidate="novalidate" .....>
    

    或使用类似 twig 的语法

    {{ form_start(form, {'attr': {'novalidate': 'novalidate'} }) }}
    

    那么 html5 验证将不再阻止表单提交并且您的后端验证将启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2019-02-28
      • 2023-03-06
      • 2014-06-22
      相关资源
      最近更新 更多