
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" и связи на соответствующие классы.Удачи.
Комментариев нет:
Отправить комментарий