#php #symfony
#php #symfony
Вопрос:
В настоящее время я создаю веб-сайт с Symfony 4, и я создаю его часть для регистрации / входа. Моя проблема в том, что у меня разные типы пользователей, поэтому разные объекты со своими собственными полями. Есть только поля электронной почты и пароля, общие для всех объектов. Итак, я хочу создать только одну форму для регистрации любого объекта. Чтобы выбрать тип пользователя, есть только поле выбора в начале формы.
Более того, мне нужна таблица для каждого типа пользователя в базе данных, но электронная почта должна быть уникальной даже для каждой таблицы.
Итак, на данный момент я отображаю правильные поля, вызывая функцию с AJAX, которая возвращает мне разные данные для создания правильного ввода. Но на данный момент возникают проблемы с проверкой, потому что я не использую FormBuilder.
И в базе данных у меня есть таблица для всех пользователей, но только с идентификатором, электронной почтой, паролем и ролью, и одна таблица для каждого типа пользователя с идентификатором пользователя (из первой таблицы) и остальными полями, соответствующими каждому типу.
Я на правильном пути или есть лучшее решение? Я новичок в Symfony, поэтому я могу пропустить очевидное решение.
Спасибо
Комментарии:
1. чтобы получить объекты в строке, посмотрите на наследование в doctrine. для вашего входа в систему-проблема: найдите поставщиков пользователей цепочки.
2. Да, я пробовал цепочку поставщиков, но UniqueEntity по электронной почте не работает, он работает для каждой таблицы отдельно, но не для всех. И моя главная проблема заключается не в входе, а в форме регистрации, для обработки правильного объекта в зависимости от выбранного значения и проверки
3. Должен быть базовый пользовательский класс, который расширяют все остальные, следовательно, наследование. Этот базовый пользовательский класс должен иметь поле электронной почты (которое тогда является уникальным). Это в основном сложная часть. Остальные части просто… работа. Написание пользовательских провайдеров для всех классов, правильная обработка регистрации (вероятно, не будет работать автоматически), но, кроме этого, это, вероятно, правильный подход. наследование в doctrine: doctrine-project.org/projects/doctrine-orm/en/2.6/reference /…
4. Вы также можете просто создать обычный пользовательский класс и загружать дополнительные данные в зависимости от того, к какой «группе» он принадлежит. Вероятно, с этим также очень легко справиться в большинстве других сценариев, поскольку управление доступом на основе ролей встроено в компонент безопасности symfony (включая брандмауэры), и у меня такое чувство, что вы все усложняете.
5. Я тоже так думаю, ха-ха. Хорошо, я попробую эти решения. Спасибо!