Добавление поля аватара в модель 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
который генерирует уникальный путь на основе неизменяемых свойств пользователя (например, хэширование идентификатора пользователя). - Используйте этот метод для визуализации изображений и установки пути загрузки для вашего виджета и валидатора в вашей форме.