Symfony& FOSUserBundle:3种不同的配置文件,具体取决于角色

时间:2016-05-05 08:37:36

标签: php doctrine-orm fosuserbundle symfony

我是用户

# User
- id
- username
- password
- email

以及具有不同个人资料字段的三个不同角色

# 1. Teacher 
- teachingSince
- aboutMe
- classes

# 2. Pupil
- class
- parents
- dateOfBirth
- grade

3. Parent
- children
- phoneNumber

another post中,PUGXMultiUserBundle被推荐。

我想使用 FOSUserBundle 来实现这一目标。有谁知道如何按角色定义不同的配置文件?

提前致谢!

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。

最简单

用户实体类包含所有字段,您有一个用户的基本表单类型,它只包含所有三个角色的公共字段,然后为每个角色添加必要的字段。< / p>

基本表单类型

class UserType extends AbstractType {

  public function buildForm( FormBuilderInterface $builder, array $options ) {
      $builder->add('username', TextType::class, []);
      // etc etc
  }

  // ...
}

<强>教师

class TeacherType extends UserType {

  public function buildForm( FormBuilderInterface $builder, array $options ) {
      parent::buildForm($builder, $options);

      $builder->add('teaching', DateType::class, []);
      // etc etc
  }

  // ...
}

复杂的方式(我可能会这样)

使用映射的超类User,为每个角色&#39;扩展它。这需要在auth方面注意一些(使用Guard)。但是,由于我非常讨厌FOSUserBundle,我可能会偏向于这个解决方案。