Добавление поля аватара в модель sfGuardUser плагина sfDoctrineGuard - PullRequest
3 голосов
/ 04 июля 2011

Я использую sfDoctrineGuardPlugin для управления пользователями, группами и аутентификацией в моем приложении Symfony.

Теперь я хотел бы добавить аватар к модели sfGuardUser. Как я могу это сделать? Какой лучший подход? Я видел несколько способов в Интернете, но я не хочу испортить мой код.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Мой предпочтительный подход не требует изменений базы данных:

  • Добавьте sfWidgetFormInputFileEditable и sfValidatorFile к sfGuardUserForm. Настройте виджет и валидатор в соответствии с вашими потребностями (удаление разрешенных, типов изображений, размеров и т. Д.)
  • Добавить метод к sfGuardUser, который генерирует уникальный путь на основе неизменяемых свойств пользователя (например, хеширование идентификатора пользователя).
  • Используйте этот метод для визуализации изображений и установки пути загрузки для вашего виджета и валидатора в вашей форме.
2 голосов
/ 04 июля 2011

Есть два пути.

  • Расширение модели sfGuardUser
  • Создание профиля модели 1: 1

Второй наиболее рекомендуется, особенно если вы планируете иметь много информации в вашей пользовательской модели. Но если у вас есть только поле аватара для добавления, расширение sfGuardUser более удобно.

Для этого поместите новый файл sfGuardUser.schema.yml в папку / config /. Он будет использован вместо плагина.

Чтобы создать «Профиль», вам не о чем знать:

Profile:
  tableName:                   profile
  columns:
    sf_guard_user_id:          integer
    firstname:                 varchar(100)
    phone:                     varchar(15)
  relations:
    sfGuardUser:               { class: sfGuardUser, onDelete: CASCADE, local: sf_guard_user_id, foreign: id, foreignType: one }
...