2017-12-06 25 views
0

내 symfony 기반 응용 프로그램에서 4 가지 유형의 사용자 중 하나는 수퍼 유저이며 일반 fosuserbundle 사용자 일 수 있지만 관리자는 3 가지 유형의 사용자를 추가 할 수 있습니다. 그래서 나는 일이 하나 개의 사용자 유형에 대한 새로운 클라이언트 클래스를 수행 내 기본 사용자 클래스Symfony3 FOSuserbundle 등록 양식 1 대 1 엔티티 등록

class Client{ 
my client class fields 
... 
    /** 
    * @ORM\OneToOne(targetEntity="AppBundle\Entity\User") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    private $user; 
... 
} 

을 그리고 내 사용자 클래스와 1 엔티티를

class User extends BaseUser 
{......} 

문제는 레지스터 양식을 수행하는 방법이다 이거? 나에게

도와주세요 지금은이 UserType을 양식을 가지고

class UserType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => User::class, 
     )); 
    } 

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

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

그리고 내 위해서는 ClientForm 클래스

class ClientForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', TextType::class) 
      ->add('address', TextareaType::class) 
      ->add('phone', TextType::class) 
      ->add('deliveryAddress', TextareaType::class) 
      ->add('user', UserType::class); 
    } 

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

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

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => Client::class, 
     ]); 
    } 
} 

그러나 이전 i '를 becuse이 나에게 오류

Neither the property "email" nor one of the methods "getEmail()", "email()", "isEmail()", "hasEmail()", "__get()" exist and have public access in class "AppBundle\Entity\Client". 
+0

그 오류는 매우 분명하지 않습니까? Client 클래스를 확인하십시오. –

+0

Thx 주석에 대한, 그리고 네, 그 맑은하지만 내 사용자 클래스에서 클라이언트가 아닌 이메일 필드를 가져 가고 싶습니다 – Anamesh

+0

ClientForm에서 '사용자'이외의 모든 필드를 제거하면 어떻게됩니까? –

답변

0

오키을 제공 이 작업을 수행하기 위해 여러 가지 방법을 시도해 보겠습니다. getParent와 getBlockPrefix를 ClientForm 클래스에서 삭제하고 모든 모양을 지 웁니다. e :)