2017-09-21 11 views
2

私はsymfony 2.8を使用しています.1つの登録フォームを作成しました。パスワードとリピートパスワードフォームフィールドにブートストラップフォームコントロールクラスを追加したいと思います。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

これには2通りの方法があります。

->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フィールドにクラスを追加することができます:最初はダウン基礎となる各フィールドにオプションを渡すであろう、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' }) }} 
関連する問題