У меня есть класс пользователя
# User - id - username - password - email
и три разные роли с разными полями профиля :
# 1. Teacher - teachingSince - aboutMe - classes # 2. Pupil - class - parents - dateOfBirth - grade 3. Parent - children - phoneNumber
В другом посте рекомендуется использовать PUGXMultiUserBundle .
Я бы хотел использовать FOSUserBundle для этого. Кто-нибудь знает, как я могу определить разные профили по ролям?
Заранее спасибо!
Там будет много способов сделать это.
класс сущности пользователя содержит все поля, у вас есть базовый тип формы для пользователя, который содержит только общие поля для всех трех «ролей», а затем расширяет их для каждой роли, добавляя необходимые поля.
Тип базовой формы
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
Суперкласса, расширьте его для каждой роли. Это потребует некоторого внимания на стороне авторизации (используйте Guard ). Но поскольку я ненавижу FOSUserBundle со страстью, я, вероятно, склонен к этому решению.