Intereting Posts
Код ошибки PHP cURL 60 Как автозаполнение других полей формы при нажатии на PHP Тест Latency / Ping из браузера Загрузка и отображение видео в PHP? Каков наилучший способ скрыть файл на сервере? PHP заставляет загружать PDF-файл, хотя я использую Content-Disposition: inline Переход от несоленых к соленым паролям MD5 Можно ли хранить байт-код HHVM в виде файла? Код ошибки Freebase: 403 – предел пользовательской скорости превышен. Пожалуйста, зарегистрируйтесь Перенаправление URL с динамическим сегментом URI в cpanel Уничтожьте или отмените сеанс, когда пользователь закроет браузер, не нажимая на logout Почему PHP 5.2+ запрещает использование абстрактных методов статического класса? CodeIgniter: как «выделить» ссылку на страницу, на которой пользователь в данный момент включен? Как подсчитать количество индексированных страниц Google через PHP простая форма входа с помощью symfony

Symfony & FOSUserBundle: 3 разных профиля, в зависимости от роли

У меня есть класс пользователя

# 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 со страстью, я, вероятно, склонен к этому решению.