2012-09-04 43 views
10

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

“请匹配请求的格式”,“请填写此字段”。有什么方法可以覆盖这个验证信息。

请帮我在这方面,我被困了一天多,因为我完全陌生的Symfony

回答

12

你看到的是这是由浏览器创建HTML5验证消息的消息。如果你想覆盖它们,你需要添加一个oninvalid属性到与该字段关联的输入标签。渲染表单字段时

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

或者,在树枝的模板,添加此属性:您可以通过两种方式来实现:

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

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

谢谢,这就是我要找的。及时一个:) – satdev86

+0

但是,如果你这样做,你输入一个无效的电子邮件地址,然后出现错误,你正确的电子邮件地址,但错误仍然出现。为什么? – craphunter

+3

卡洛斯的答案几乎是正确的,但有一些问题。有关解决方法,请参阅“http://stackoverflow.com/questions/10361460/how-can-i-change-html-5-form-validation-errors-default-messages”。 – IsraelWebDev

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来应用翻译

+0

不,他提到的消息是由浏览器创建的HTML5验证消息 –

+0

该死的我还没有看到^^' – Sybio