2016-11-06 30 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