sfDoctrineGuardPlugin - это плагин который реализует функционал авторизации и аутентификация пользователей.
Самый главный вопрос, который возникает у всех, кто пользуется этим плагином: "как дополнить схему юзеров своими полями?" Например, добавить телефон пользователя и т. п.
Создатели плагина предлагают решать проблему через отдельную табличку профилей пользователей.
sfGuardUserProfile: tableName: user_profiles columns: id: type: integer(4) primary: true autoincrement: true user_id: type: integer(4) notnull: true email: type: string(80) notnull: true email: true fullname: # ФИО type: string(80) notnull: true tel: # моб. телефон type: string(80) notnull: false relations: User: class: sfGuardUser foreign: id local: user_id type: one onDelete: cascade foreignType: one foreignAlias: Profile indexes: email: fields: [email] type: uniqueт. е. создается еще один класс sfGuardUserProfile, который связан с основным классом sfGuardUser.
Вызывается оно так:
$profile = $user->getProfile();
Иногда это не всегда удобно. Что делать если мы хотим расширить sfGuardUser напрямую? Редактировать код плагина sfDoctrineGuardPlugin не самое лучшее решение. Выход есть.
Не все знают, что если в /config/doctrine/schema.yml прописать так
sfGuardUser: # расширем класс пользователя доп полями columns: customer_id: type: integer(4) notnull: false relations: Customer: local: customer_id foreign: id class: Customer BookmarkList: local: id foreign: user_id class: Bookmark indexes: customer: fields: [customer_id] sorting: ASCто класс (табличку в бд) sfGuardUser будет расширен дополнительным полями и связями. В нашем случаи добавится поле "customer_id" и связи на соответствующие классы.
Удачи.
Комментариев нет:
Отправить комментарий