enemis / media-bundle
symfony应用的媒体管理系统,受Sonata Media Project启发并基于其开发
0.02
2021-02-11 13:23 UTC
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
# 媒体包 - 处理媒体的最简单方法。
我们解决什么问题,是什么激发了开发此项目以管理媒体?
Главная проблема sonata media-bundle в том что он является частью экосистемы соната, а значит для управления медиа файлами вам нужно установить:
sonata core, sonata block bundle, sonata admin. Но данные бандлы не всегда нужны, например у вас свой админ интерфейс или ваш проект будет конфликтовать с зависимости сонаты.
项目目标
- 摆脱项目中的不必要的依赖
- 在集成media-bundle时,避免现有项目的依赖地狱
- 减少代码库,从而简化开发
- 增加提供者数量,并允许只使用所需的提供者
- 实现使用不同配置的不同实体集组的可能性
- 实现与Liip imagine的轻松集成
- 使用knp_gaufrette存储媒体,从媒体包中删除适配器
- 优化存储,删除不常用的字段,并在需要时提供添加它们的机会。已删除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],`
配置
创建实体
Создайте сущности для каждого контекста можно использовать одни и теже сущности и таблицы для разных контекстов либо создать разные
### \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`
Данная команда создаст необходимые таблицы.
编写有关在亚马逊上存储原始文件而在本地缓存单独的说明