2012-05-01 17 views
16

私のフォームタイプからエラーメッセージを翻訳する必要があります。ここに私のフォームタイプのコードです:Symfony2:フォームタイプでカスタムエラーメッセージを翻訳するには?

class ReferFriendType extends AbstractType { 

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $defaultSubject = "This is a default referral subject."; 
    $defaultMessage = "This is a default referral message."; 

    $builder->add('email1', 'email',array(
     'required' => true, 
     'label' => 'Email 1* :', 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('email2', 'email',array(
     'label' => 'Email 2 :', 
     'required' => false, 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('email3', 'email',array(
     'label' => 'Email 3 :', 
     'required' => false, 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('email4', 'email',array(
     'label' => 'Email 4 :', 
     'required' => false, 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('email5', 'email',array(
     'label' => 'Email 5 :', 
     'required' => false, 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('subject', 'text', array(
     'data' => $defaultSubject, 
     'required' => true, 
     'label' => 'Subject* :', 
     'attr' => array('class' => 'large_text'), 
    )); 
    $builder->add('message', 'textarea', array(
     'data' => $defaultMessage, 
     'required' => true, 
     'label' => 'Message* :', 
     'attr' => array('rows' => '5', 'cols' => '40'), 
    )); 

} 

public function getDefaultOptions(array $options) 
{ 
    $collectionConstraint = new Collection(array(
     'fields' => array(
      'email1' => array(
       new Email(), 
       new NotBlank(array(
        'message' => 'You must enter atleast one email address for a valid submission', 
       )), 
      ), 
      'subject' => new NotBlank(), 
      'message' => new NotBlank(), 
     ), 
     'allowExtraFields' => true, 
     'allowMissingFields' => true, 
    )); 

    return array(
     'validation_constraint' => $collectionConstraint, 
     'csrf_protection' => false, 
    ); 
} 

public function getName() 
{ 
    return 'referFriend'; 
} 

}私はフランス語にgetDefaultOptionsで()メソッド「あなたは、有効な提出のために少なくとも1つの電子メールアドレスを入力しなければならない」翻訳したい

。私はmessages.fr.ymlに翻訳を追加しました。しかし、それは翻訳されていません。どのようにこれを行うことができます任意のアイデア?

答えて

35

検証の翻訳は、validators.LANG.ymlというファイル(messages.LANG.ymlではなく)です。

+0

で私の作品それは仕事をdintします。 – VishwaKumar

+6

ファイルを追加した後にキャッシュをクリアしましたか? –

+0

私の悪い!出来た。ありがとう! – VishwaKumar

1

docsに例があります。

+0

これは非常にはっきりしていますが、私の場合はフォームの種類にバリデーションを追加しています。 – VishwaKumar

1

置換はvalidation.ymlファイルではなく、バリデータによって設定されます。

validators.en.yml

noFirstnameMinLimit: Please provide at least {{ limit }} characters 

validation.yml

Acm\AddressBundle\Entity\Address: 
    properties: 
     firstname: 
      - Length: 
       min: 3 
       minMessage: "noFirstnameMinLimit" 

これは私がvalidators.LANG.ymlを作成し、翻訳を追加することが、試したのSymfony 2.4

+0

には、{{制限}}、{{比較値}}、{{値}}などの使用可能なプレースホルダのリストがありますか? –

関連する問題