0

フォーム ラッパーのカスタム ID の設定に問題があります。$options['attr']['id'] 動作しないようです。createForm() メソッドに渡されたすべてのオプションが無視されているようです... Symfony 2.1 ベータ 1 に取り組んでいます

フォームのセットアップ:

$login_form = $this->createForm(new LoginType(), $user, array(
                    'attr' => array(
                        'id' => 'login-form'        
                    )
                ));

これはビューに渡されます:

{{ form_widget(login_form) }}

しかし、それは生成します:

<div id="login">
    <div>
        <label class="required">Mobile</label>
        <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
    </div>
    <div>
        <label class="required">Password</label>
        <input type="text" maxlength="255" required="required" name="login[password]" id="login_password">
    </div>
</div>

そのため、フォーム ラッパーには「login-form」ではなく、id="login" があります。

4

3 に答える 3

1

あなたが言うように、これはどの{{ form_widget(login_form) }}ようにして上記のコードを生成できますか?

<div id="login">
    <div>
        <label class="required">Mobile</label>
        <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
    </div>
    <div>
        <label class="required">Password</label>
        <input type="text" maxlength="255" required="required" name="login[password]" id="login_password">
    </div>
</div>

これ はこれ{{ form_widget(login_form) }}だけをレンダリングする必要があります:

 <div>
        <label class="required">Mobile</label>
        <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
    </div>
    <div>
        <label class="required">Password</label>
        <input type="text" maxlength="255" required="required" name="login[password]" id="login_password">

あなたのコードに id="login" を含むその div は私には意味がありません。その div を手動で追加したのはあなたでなければならないので、自分で id を変更できます

于 2012-07-11T16:39:53.123 に答える
0

2 年後 :) AbstractType の setDefaultOptions メソッドをオーバーライドできます。Symfony 2.5 でテスト済み

    class CommentType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {

              $builder
                    ->setMethod('POST')
                    ->add('text', 'textarea', array('label' => ' ',
                        'attr' => array('class' => 'form-control',
                            'placeholder' => 'Your comment')
                    ))
                      ->add('folder_id', 'hidden', array('label' => ' ',
                        'attr' => array('class' => 'form-control',
                            'placeholder' => 'Your comment')
                    ))
                      ->add('link_id', 'hidden', array('label' => ' ',
                        'attr' => array('class' => 'form-control',
                            'placeholder' => 'Your comment')
                    ))
                    ->add('save', 'button', array('label' => 'Save',
                        'attr' => array('class' => 'btn-lg btn-primary')
                            )
                    );
        }

        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Linkboard\FrontBundle\Document\comment',
                'attr' => array('id' => 'comment-form')
            ));
        }

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

次のようなものを生成します。

    <form name="comment" method="post" action="" id="comment-form">
    .....
    </form>
于 2014-09-10T12:57:32.807 に答える