2012-09-04 91 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