2016-12-15 23 views
0

私は現在、特別な属性のために翻訳者を使用したいFormTypeに取り組んでいます。Symfony 3翻訳者からフォームへの変換

$builder->add("firstname", TextType::class, array(
       "label" => "person.label.firstname", 
       "attr" => array(
        "placeholder" => "person.label.firstname", 
        "pattern" => "^[a-zA-Z \-]+", 
        "oninvalid" => 'setCustomValidity("' . $translator->trans('person.validity.firstname') . '")') 
      )) 

どうすればを動作させることができますか?私はサービスとしてそれを注入する必要がありますか(どのように)、または私はそれをこのフォームタイプのパラメータとして渡すべきですか?

ありがとうございます。

+0

これはすべてここで説明されています[ここで:*フォームからサービスまたは構成にアクセスする方法](https://symfony.com/doc/current/form/form_dependencies.html)。 – Yoshi

+0

ありがとう! – Mason

+1

フィールド(ラベルとプレースホルダ)はsymfonyによってボックス外に翻訳されるべきです – Matteo

答えて

1

私は@Matteoに同意します。これはあなたのフォームの中でそのまま使えるはずです。

[プロジェクト] \アプリ\ CONFIG \ config.ymlを持っている必要があります。

framework: 
    .... 
    translator: {fallbacks:["en"]} 
    translator: 
     paths: 
      - "@[App]Bundle/Resources/translations" 
    ... 

そして、すべてのファイル "\ [挙] \ SRC [アプリケーション]バンドル\ Ressources \翻訳" 下:「メッセージ。 [LANG 2文字コード] .yml "あなたのケースで

ファイル "messages.en.ymlは:.yml" のようになります。

person: 
    label: 
     firstname: "firstname" 
     lastname: "lastname" 

またbecareful" タブ "ファイルは受け付けません" sign "(スペース記号のみ)。

検証メッセージも、このよう指定されたファイルの "[挙] \ SRC [アプリケーション]バンドル\ Ressources \翻訳\" の下でなければなりません:あなたは

を "バリ[LANG 2文字コード] .yml"ケース「validators.en.yml」:

person: 
    validity: 
     firstname: "firstname doesn't match" 

「ファーストネーム」の妥当性ルールは、フォームで使用data_classで注釈する必要があります。

class [YOUR DATA_CLASS] { 
    /** 
    * @Assert\NotBlank() 
    * @Assert\Regex(
    * groups= {[if needed]} 
    * pattern = "^[a-zA-Z \-]+", 
    * match= "false", 
    * message = "person.validity.firstname") 
    * 
    */ 
    public $firstname; 
} 
関連する問題