2015-02-09 3 views
0

Мне удалось переопределить шаблон и форму для страницы регистрации, но одна вещь, которую я заметил, это то, что вводятся начальные поля.FOSUserBundle, SonataUserBundle переопределить регистрацию

Вот мой 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')) 
    ; 
} 

Когда я делаю {{ dump(form) }} в шаблоне я получаю это:

enter image description here

Я понимаю, что я могу сделать $ builder-> удалить() в этих полях, но если я переписываю форму, мне действительно нужно это сделать?

Thanks

ответ

0

Да. Это единственный способ. Потому что метод buildForm() прикован к родительскому buildForm(). Вот как форма родитель-ребенок зависимость работает в Symfony2:

/** 
* @return string 
*/ 
public function getParent() 
{ 
    return 'fos_user_registration'; 
} 
0

Не уверен, если это информация вы ищете, но при использовании FOSUser и Sonata пользователя, вы можете просто расширить родителю :: 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 

}