2016-12-15 59 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 \翻譯\」 所有文件「的消息。 「你的情況

文件 」[郎2字符代碼] .yml messages.en.yml「 應該是這樣的:

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

而且becareful的」 .yml 「文件不接受」 選項卡標誌「(僅」空間標誌「)。

驗證消息還應該在 「[謨] \ SRC [應用]包\ Ressources \翻譯\」 中命名爲這個文件: 「驗證[郎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; 
}