Свойства FOSUserBundle в форме регистрации от другого лица - PullRequest
4 голосов
/ 11 августа 2011

Hy парни,

Я решил использовать FOSUserBundle для обработки аутентификации пользователя в моем приложении.В моем приложении компании могут зарегистрировать свои данные (имя, адрес и т. Д.).

Поэтому я решил создать объект с именем Company для хранения связанных с компанией данных и объект с именем User для отдельного хранения пользовательских данных из FOSUserBundle.

Я начал переопределять форму регистрации по умолчанию,это описано в документации Переопределение форм FOSUserBundle по умолчанию , но проблема в том, что я не могу добавить свои поля из Компании в форму, она всегда пытается получить доступ от сущности Пользователь (вероятно, потому что этасвязанных с FOSUserBundle).

Есть ли способ поместить поля сущности Компании в регистрационную форму FOSUser?

Я не хочу портить модель данных, используя Компанию в качествебазовый объект для FOSUser и добавление в него всех полей (имя пользователя, адрес электронной почты, пароль и т. д.).

С уважением,

1 Ответ

5 голосов
/ 13 августа 2011

Семантически говоря, User не обязательно должен быть личностью, поэтому я не вижу причин, по которым компания является пользователем вашего приложения.Я также не вижу причин для наличия двух отдельных таблиц в вашей базе данных.

Я бы создал отдельный класс Company, который расширяет пользовательский класс:

namespace Acme\Bundle\AcmeBundle\Entity;

use FOS\UserBundle\Entity\User;

class Company extends User
{
    // Your company related fields and related getters/setters go here.
}

Затем переопределите пользовательский класс из вашегоконфигурация (например, в app/config/config.yml):

fos_user:
    user_class: Acme\Bundle\AcmeBundle\Entity\Company

Теперь UserBundle знает, какой класс использовать в качестве User.После настройки вашего пользовательского класса вы можете переопределить RegistrationFormType для включения ваших пользовательских полей.

Если, однако, вы все еще хотите использовать два отдельных объекта в своем приложении, я предлагаю вам соединить их через Отношение один-к-одному и затем встраивание вашей Company сущности в RegistrationFormType, следуя документам о встраивании одного объекта в форму.

Ссылка: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.2.0/Resources/doc/overriding_forms.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...