2017-09-21 86 views
2

我正在使用symfony 2.8,我創建了一個註冊表單,我想將引導窗體控件類添加到密碼和重複密碼錶單字段中。Symfony添加引導窗體控件類

$builder 
->add('name', TextType::class,array(
    'attr' => array(
     'class' => 'form-control' 
    ) 
)) 
-> add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class, 
    'first_options' => array('label' => 'Password'), 
    'second_options' => array('label' => 'Repeat Password'), 
    'attr' => array('class' => 'form-control') 
)); 

將'name'字段置於其工作狀態,但對於該類未添加的密碼字段。 如何爲密碼字段添加「表單控件」類。 任何幫助,非常感謝。 謝謝。

回答

2

有兩種方法可以做到這一點。第一種方法是使用options,其將通過選擇到每個潛在領域:

->add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class, 
    'first_options' => array('label' => 'Password'), 
    'second_options' => array('label' => 'Repeat Password'), 
    'options' => array('attr' => array('class' => 'form-control')) 
)); 

您還可以添加類的first_optionssecond_options領域,像這樣。如果您有針對每個字段的選項,或者您想覆蓋主選項中的某些內容,這將非常有用。

->add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class, 
    'first_options' => array(
     'label' => 'Password', 
     'attr' => array('class' => 'form-control') 
    ), 
    'second_options' => array(
     'label' => 'Password', 
     'attr' => array('class' => 'form-control-override') 
    ), 
    'attr' => array('class' => 'form-control') 
)); 

此外,as of Symfony 2.6它具有built-in Bootstrap form theme support到你不應該必須手動添加這些類到所有領域。

+0

大,非常感謝:) – Aamir

1

來自Symfony開發團隊的一些人建議您應該直接在html中使用boostrap的類(如果您想查看建議,請使用here)。這個建議對我來說非常敏感,因爲Symfony是用於後端開發,而不是前端。因此,解決這一理想的方法是在Type類來創建你的兩個領域,並呈現窗體時,添加類似:

{{ form_row(name, { attr: { 'class': 'form-control' }) }} 
{{ form_row(password, { attr: { 'class': 'form-control' }) }} 
{{ form_row(plainPassword, { attr: { 'class': 'form-control' }) }}