2012-09-04 14 views
10

symfony2でフォーム検証メッセージをオーバーライドする方法。 validation.xmlファイルに関連するモデルクラスがあります。私はそれがhtml5に基づいてフォームを検証すると思う。symfony2でのフォーム検証メッセージのオーバーライド

「要求されたフォーマットに一致してください。」、「このフィールドに記入してください。」この検証メッセージを無効にする方法はありますか?私はあなたがブラウザによって作成されたHTML5の検証メッセージです参照

答えて

12

それらのメッセージをsymfonyのために全く新しいですと

は、この点で私を助けてください、私は、一日以上のため立ち往生しています。それらを上書きする場合は、そのフィールドに関連付けられた入力タグにoninvalid属性を追加する必要があります。 、お使いのコントローラやフォームタイプで

フォームフィールドにこの属性を追加します:次の2つの方法でこれを行うことができます

$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

関連する問題