Добавление поля аватара в модель sfGuardUser плагина sfDoctrineGuard

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

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

Спасибо!

2 ответа

Решение

Есть два способа.

  • Расширение модели 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 }

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

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