0

登録ページのテンプレートとフォームをオーバーライドすることができましたが、最初のフィールドが挿入されていることに気付きました。

これが私のbuildformコードです:

public function buildForm(FormBuilderInterface $builder, array $options) {        
    $builder->add('firstname', 'text', array('label' => 'First Name'))
            ->add('lastname', 'text', array('label' => 'Last Name'))
            ->add('over_18', 'checkbox', array('label' => 'Yes I am over 18', 'mapped' => false))
            ->add('email', 'text', array('label' => 'Email'))
            ->add('phone', 'text', array('label' => 'What is your telephone number?'))
            ->add('password', 'password', array('label' => 'Choose a password'))
    ;
}

テンプレートでa を実行する{{ dump(form) }}と、次のようになります。

ここに画像の説明を入力

これらのフィールドで $builder->remove() を実行できることは理解していますが、フォームを上書きする場合、本当にこれを行う必要がありますか?

ありがとう

4

2 に答える 2

0

これが探している情報かどうかはわかりませんが、FOSUser と Sonata User を使用している場合は、parent::buildForm() を拡張して、次のようにカスタム フィールドを追加するだけです。

// src/Application/Sonata/UserBundle/Form/Type/RegisterType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
    // call to FOSUser buildForm, brings default fields
    parent::buildForm($builder, $options);

    $builder
        ->add('phone','text',array('label' => 'phone','required'=>true))
        ;
    //do $builder->remove(..) if necessary

}
于 2016-02-27T08:07:52.567 に答える