Расширение sfGuardUser: добавление поля «номер телефона» - PullRequest
1 голос
/ 12 сентября 2011

DOCTRINE 1.2 // SYMFONY 1.4

Привет!на моем веб-сайте я использую таблицы sfGuardPlugin с другими таблицами, чтобы установить систему сигнализации, приложение получает почту пользователей, чтобы получать почту и отправлять электронную почту, теперь мне также нужен номер телефонадля отправки смс!все, что мне нужно, это дополнительное поле ("phone") в таблице sfGuardUser ', мне было интересно, смогу ли я сделать это с "inheritence", но застрял в типе (простой, конкретный? ...) Есть идеи?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Почему бы вам не использовать таблицу sf_guard_user_profile для добавления настраиваемого поля?Это рекомендуемый метод.

sf_guard_user_profile:
  _attributes: { phpName: sfGuardUserProfile }
  id:          ~
  user_id:     { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
  phone:       varchar(20)

Тогда вы можете использовать:

$this->getUser()->getGuardUser()->getProfile()->getPhone()

или

$this->getUser()->getProfile()->getPhone()

В любом случае, если вы хотите / должны «расширить» sfGuardUserВы должны изменить плагин schema.yml, добавить свое поле и перестроить все классы.Я советую вам против.; -)

0 голосов
/ 14 сентября 2011

Я решил проблему с помощью наследования: набери простой и добавь мое поле!Спасибо, в любом случае !

Myuser:
  inheritance:
    extends: sfGuardUser
    type: simple
  columns:
    gsm:
      type: string(30)

Таким образом, поле "gsm" появится в таблице sfGuardUser и будет автоматически управляться плагином (мне не придется использовать MyUser)

Теперь я могу получить телефонномер с помощью: getGsm () .... из объекта sfGuardUser!Спасибо всем!

0 голосов
/ 12 сентября 2011

Я не уверен, если у вас возникли проблемы с простым созданием поля в вашей базе данных / модели.Если это так:

Например, если вы определяете свои таблицы в файле schema.yml, вы можете сделать что-то вроде этого:

sfGuardUser:
  columns:
    somecolumn:
      type: string

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

Если проблема связана с чем-то другим, дайте мне знать.

...