2016-11-06 32 views

回答

1

Official docs为救援的错误!

例如,如果你想要一个name字段添加到您的注册表格:

<?php 
// src/AppBundle/Form/RegistrationType.php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class RegistrationType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('name'); 
    } 

    public function getParent() 
    { 
     return 'FOS\UserBundle\Form\Type\RegistrationFormType'; 

     // Or for Symfony < 2.8 
     // return 'fos_user_registration'; 
    } 

    public function getBlockPrefix() 
    { 
     return 'app_user_registration'; 
    } 

    // For Symfony 2.x 
    public function getName() 
    { 
     return $this->getBlockPrefix(); 
    } 
} 

还有另外一个关键段有:

  • If you don't want to reuse the fields added in FOSUserBundle by default, you can omit the getParent method and configure all fields yourself.

所以,你可以省略getParent方法,而是在buildForm方法中添加所有您想要的字段。

+0

非常感谢你,我想会有一些更多更好,更简单的方法然后就重建形成我自己。一些未设置('password2') – fdrv

+0

FosUserBundle在注册过程开始时创建一个事件。该事件是FOSUserEvents :: REGISTRATION_INITIALIZE。 您可以创建一个事件侦听器,并使用提交的数据进行所需的操作,例如,创建第二个密码表单字段并填写提交的密码副本。 –

0

所以有一个更简单的方法。 ....

class ProfileFormType extends AbstractType 
{ 
    .... 

    public function getParent() 
    { 
     return 'FOS\UserBundle\Form\Type\ProfileFormType'; 
    } 

$ builder->删除( '电子邮件');

https://stackoverflow.com/a/39282012/2309309