覆盖symfony2上的表单验证消息

时间:2012-09-04 05:52:27

标签: forms html5 validation symfony

如何覆盖symfony2中的表单验证消息。虽然有一个validation.xml文件相关的模型类。我认为它验证了基于html5的表单。

“请匹配请求的格式”,“请填写此字段”。有没有办法覆盖此验证消息。

请在这方面帮助我,我被困了一天以上,因为我对symfony来说是全新的

2 个答案:

答案 0 :(得分:13)

您看到的那些消息是由浏览器创建的HTML5验证消息。如果要覆盖它们,则需要向与该字段关联的输入标记添加oninvalid属性。您可以通过两种方式执行此操作:

在您的控制器或表单类型中,将此属性添加到表单字段:

$builder->add('email', 'email',array(
    'attr'=>array('oninvalid'=>"setCustomValidity('Would you please enter a valid email?')")
));

或者,在twig模板中,在呈现表单字段时添加此属性:

{{ form_row(form.email, { 'attr': {'oninvalid': "setCustomValidity('Please give me a nice email')"} }) }}

答案 1 :(得分:3)

在声明断言时,您可以通过消息选项更改每个验证器的消息:

/**
     * @ORM\Column(type="string", length=255, unique=true)
     * @Assert\NotBlank(
     *     message="You have to choose a username (this is my custom validation message).",
     *     groups={"registration", "account", "oauth"}
     * )

您也可以通过创建文件MyBundle / Resources / translations / validators.fr.xliff来应用翻译