Intereting Posts
Как настроить SSL с помощью Laravel 5 за балансировщиком нагрузки (ssl_termination)? Проблемы с генератором миниатюр GD Почему моя строка SQL вызывает ошибку «Ошибка сообщения: ошибка синтаксиса: синтаксическая ошибка» в PHP? Не удается найти: BlowfishPasswordHasher Cakephp php-изображение не загружается в базу данных аутентифицировать прокси-сервер squid throw (PHP-сокет) Преобразование записи MySQL в строку JSON в PHP PHP-файл не может восстанавливать переменную сеанса на разных страницах Невозможность присвоить значения массиву из цикла Как уловить фатальную ошибку: Максимальное время выполнения 30 секунд превышено в PHP PHP на IIS7 – получение html-страницы «Object Moved» вместо фактического перенаправления Практика базы данных и ООП в PHP PHP Обработка ошибок: die () Vs trigger_error () Vs throw Exception Как фильтровать связанные данные с помощью модуля FriendsOfCake Search для CakePHP 3.1.0 Лучший способ сделать онлайн-словарь?

Symfony Sonata Media Bundle добавляет изображения / видео пользователю

Я пытаюсь интегрировать Sonata Media Bundle в свой проект. Проблема в том, что я не понимаю, как работает пакет.

В «приложении» он создал класс Media, Gallery и GalleryHasMedia. Для чего они? Как я могу добавить поле изображений и поле видео в свой пользовательский объект? (как множественное число)

С уважением, нова

Related of "Symfony Sonata Media Bundle добавляет изображения / видео пользователю"

Медиа – это объект, который сохраняет все свойства вашего видео / изображения: ширина / высота / путь к файлу …

Галерея Entity Gallery полезна, если вы хотите связать несколько медиа вместе (галерея видео / изображений по одному и тому же вопросу).

Галерея Entity GalleryHasMedia – это Entity, которая связывает галерею и медиа.

SonataMedia устанавливается в приложении Bundle, поэтому вы можете легко расширять и изменять код в соответствии с вашими потребностями.

Если вы хотите добавить Media или Gallery для пользователя, который вам просто нужно сделать:

class UserEntity { /** * @var Media * * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="picture", referencedColumnName="id") * }) */ private $picture; /** * @var Gallery * * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Gallery") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="gallery", referencedColumnName="id") * }) */ private $gallery; } 

Восстановите свой приемник и сеттеры с помощью консоли:

 php app/console doctrine:generate:entities TestBundle:User 

И вы настроены на использование SonataMedia в вашем User Entity.

ОБНОВИТЬ

Если вы хотите управлять несколькими изображениями для пользователя, вам нужно сделать следующее:

UserEntity

 class UserEntity { /** * @var Media * * @ORM\OneToMany(targetEntity="Application\Sonata\MediaBundle\Entity\Media", mappedBy="user") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="images", referencedColumnName="id") * }) */ private $images; } 

Application \ соната \ MediaBundle \ Entity \ Media

 class Media { /** * @var User * * @ORM\ManyToOne(targetEntity="UserEntity", inversedBy="images") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="user", referencedColumnName="id") * }) */ private $user; } 

UserAdmin

 class UserAdmin { public function configureFormFields(FormMapper $formMapper) { $formMapper->add('images', 'sonata_type_collection', array(), array( 'edit' => 'inline', 'inline' => 'table', 'link_parameters' => array( 'context' => 'images', 'provider' => 'sonata.media.provider.image' ) )) } } 

Вы можете изменить отображение, изменив свойства редактирования и встроенных свойств. Link_parameters задает свойства мандатов для формы: контекст и поставщик

ОБНОВЛЕНИЕ 2

вопрос 2

Если вы хотите несколько галерей для пользователя, вам просто нужно выполнить тот же процесс, который я объяснил в своем предыдущем обновлении, единственное различие заключается в том, что вы должны создать новое свойство, например: private $ imageGalleries с галереей targetEntity, добавить inversedBy в Gallery Entity of Sonata и добавьте в свой класс SonataAdmin новое свойство, только изменив изображения имен полей на imageGalleries.

Вопрос 3

Вне сонаты вы должны использовать форму sonata_media_type для обработки носителя. http://sonata-project.org/bundles/media/2-0/doc/reference/form.html Поскольку у вас есть отношения oneToMany, это будет коллекция sonata_media_type.

Я не знаю, как обращаться с галереями.

Из документации:

"Заметка

Команда будет генерировать объекты домена в пространстве имен приложений. Таким образом, вы можете указать ассоциации объектов в глобальное и общее пространство имен. Это упростит обмен объектами, поскольку ваши модели позволят указать на глобальное пространство имен. Например, медиа будет Application \ Sonata \ MediaBundle \ Entity \ Media. "http://sonata-project.org/bundles/media/2-2/doc/reference/installation.html

Довольно много того, что вы получаете, когда вы используете пакет easy-extands.

Вы используете их точно так же, как и любую сущность, просто из другого пространства имен в ваши существующие сущности.

Что касается использования их в другом типе формы, просто вставьте тип медиа-формы в свой тип пользовательской формы: http://sonata-project.org/bundles/media/2-2/doc/reference/form.html

Чтобы добавить поля к другому объекту, вы просто добавляете свойство с помощью геттеров и сеттеров и (мы всегда используем аннотации доктрины, а не yaml) добавляем аннотацию для медиа-объекта в качестве целевого объекта с именем столбца для типа отношения (1: 1 , 1: M, M: M и т. Д.) Обычным способом symfony.