enemis / media-bundle
Media management system for symfony application, inspired and based on Sonata Media Project
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.1
- doctrine/doctrine-bundle: ^2.2
- doctrine/orm: ^2.8
- guzzlehttp/psr7: ^1.0
- imagine/imagine: ^0.6 || ^0.7 || ^1.0
- jms/serializer-bundle: ^2.3.1 || ^3.0
- knplabs/gaufrette: ^0.8 || ^0.9
- knplabs/knp-gaufrette-bundle: v0.7.1
- kriswallsmith/buzz: ^0.15 || ^0.16
- psr/log: ^1.0
- symfony/config: ^4.3
- symfony/console: ^4.3
- symfony/dependency-injection: ^4.3
- symfony/event-dispatcher: ^4.3
- symfony/form: ^4.3
- symfony/framework-bundle: ^4.3
- symfony/mime: ^4.3 || ^5.0
- symfony/options-resolver: ^4.3
- symfony/routing: ^4.3
- symfony/security-bundle: ^4.3
- symfony/security-core: ^4.3
- symfony/templating: ^4.3
- symfony/translation: ^4.3
- symfony/twig-bundle: ^4.3
- symfony/validator: ^4.3
- twig/twig: ^2.10|^3.0
Conflicts
- doctrine/dbal: <2.6.0
- friendsofsymfony/rest-bundle: <2.1 || >=3.0
- jms/serializer: <0.13
- liip/imagine-bundle: <1.9
- symfony/monolog-bundle: <2.4
README
#Media bundle - the easiest way to manipulate your media.
Какую проблему решаем и что послужило побудило разработать данный проект для управления медия?
Главная проблема sonata media-bundle в том что он является частью экосистемы соната, а значит для управления медиа файлами вам нужно установить:
sonata core, sonata block bundle, sonata admin. Но данные бандлы не всегда нужны, например у вас свой админ интерфейс или ваш проект будет конфликтовать с зависимости сонаты.
Цели проекта:
- Избавиться от ненужныж зависимостей для проектов
- Избежать Dependency hell для существующих проектов при интеграции с media-bundle
- Уменьшить кодовую базу, а значит упростить развитие
- Увеличить кол-во провайдеров и позволить использовать только нужные провайдеры
- Реализовать возможность использовать несколько разных наборов entity с разным набором настроек для каждой группы
- Реализовать легкую интеграцию с Liip imagine
- Использовать knp_gaufrette для хранения media убрав адаптеры из кода media bundle
- Оптимизировать хранилища убрав редко используемые поля, оставив при необходимости возможность добавить их. Убраны author_name, copyright
Установка
Добавить в bundles.php:
` Enemis\MediaBundle\EnemisMediaBundle::class => ['all' => true],
Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true],
Sonata\Doctrine\Bridge\Symfony\SonataDoctrineSymfonyBundle::class => ['all' => true],`
Настройка
Создание Entities
Создайте сущности для каждого контекста можно использовать одни и теже сущности и таблицы для разных контекстов либо создать разные
### \App\Entity\Media.php
`<?php
declare(strict_types=1);
namespace App\Entity;
use Enemis\MediaBundle\Entity\BaseMedia;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\MediaRepository;
/**
* @ORM\Entity(repositoryClass=MediaRepository::class)
*/
class Media extends BaseMedia
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
public function getId(): ?int
{
return $this->id;
}
}`
### \App\Entity\Gallery.php
`<?php
declare(strict_types=1);
namespace App\Entity;
use Enemis\MediaBundle\Entity\BaseMedia;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\GalleryRepository;
/**
* @ORM\Entity(repositoryClass=GalleryRepository::class)
*/
class Gallery extends BaseMedia
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
public function getId(): ?int
{
return $this->id;
}
}
### \App\Entity\GalleryHasMedia.php
<?php
declare(strict_types=1);
namespace App\Entity;
use Enemis\MediaBundle\Entity\BaseGalleryHasMedia;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class GalleryHasMedia extends BaseGalleryHasMedia
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
public function getId(): ?int
{
return $this->id;
}
}
`
#Репозитории?
Затем нужно выполнить обновить схему базы данных.
Для получения звпросов которые должны выполнится выполните
`$ bin/console doctrine:schema:update --dump-sql`
Для внесение изменений рекомендуется использовать миграции либо если вы только начинаете проект:
`$ bin/console doctrine:schema:update --force`
Данная команда создаст необходимые таблицы.
Написать про возможность хранение оригиналов на амазон а кеш отдельно