enemis/media-bundle

symfony应用的媒体管理系统,受Sonata Media Project启发并基于其开发

安装: 6

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

0.02 2021-02-11 13:23 UTC

This package is auto-updated.

Last update: 2024-09-23 20:29:16 UTC


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`
     
     Данная команда создаст необходимые таблицы.

编写有关在亚马逊上存储原始文件而在本地缓存单独的说明