zeglup/media-bundle

源自Donjohn/MediaBundle,一个受sonata media bundle启发的简单媒体包

安装: 7

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 2

开放问题: 0

类型:symfony-bundle

3.0.0 2019-03-04 10:53 UTC

This package is auto-updated.

Last update: 2024-09-21 20:31:01 UTC


README

SensioLabsInsight

向Sonata致敬,它们启发了这个包。

安装

Composer

composer require donjohn/media-bundle

最小配置

创建一个新的类,并扩展Donjohn\MediaBundle\Media

namespace YourBundle\Entity;
use Donjohn\MediaBundle\Model\Media as BaseMedia;

/**
 * @ORM\Table()
 * @ORM\Entity()
 */
class YourMedia extends BaseMedia
{
    /**
     * @var integer
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
    */
    protected $id;
}

LiipImagineBundle

将此添加到您的config.yml

liip_imagine:
    filter_sets:
        full: 
            quality: 100
        thumbnail:
            quality: 75
            filters:
                auto_rotate: ~
                thumbnail: { size: [120, 120], mode: outbound }

有关liip过滤器配置,请参阅LiipImagineBundle 配置

可选配置

更改上传文件的文件夹

donjohn_media:
    upload_folder: /AnotherFolder

liip_imagine:
    resolvers:
        default:
            web_path:
                cache_prefix: AnotherFolder/cache

限制上传文件大小

donjohn_media:
    file_max_size: 500M

提供者

可用提供者

  • image
  • file

用法

要在twig中插入媒体,请使用带有可选过滤器名称的块,该名称在liip_imagine.filter_sets部分中定义。如果您没有提供过滤器名称,则默认为'reference'过滤器。它将返回带有任何过滤器或后处理的原始上传媒体。

{% media mediaObject, '<filter>' %}

您还可以将class/width/height/alt选项传递给媒体渲染

{% media mediaObject, '<filter>' with {class: 'classwanted class2wanted', alt: 'title', width: '200px', height: '50px'} %}

表单类型

有Donjohn\MediaBundle\Form\Type\MediaType可用

$builder->add(<fieldName>, MediaType::class, ['media_class'=> YourEntity::class] );

提供者选项的默认值是null。一个猜测器将尝试动态检测每个文件的最佳提供者,除非您定义了该选项。默认猜测是'file'。

如果不想允许从实体中删除媒体,请将'allow_delete'选项设置为false。它将从表单中删除取消链接复选框。

如果不想在上传文件时更新当前媒体,而是创建新的媒体,请将'create_on_update'选项设置为true。旧的不会删除。

如果您要上传媒体集合,请将multiple设置为true。

$builder->add(<fieldName>, MediaType::class, ['media_class' => YourEntity::class, 'multiple' => true ] );

OneupUploader

对于非常大的文件,该包包含Fine Uploader功能,归功于OneUpUploaderBundle。

$builder->add(<fieldName>, MediaType::class, , ['media_class' => YourEntity::class, 'fine_uploader' => true, 'multiple' => <true|false> ] );

不要忘记安装fineuploader(bower/npm/...),并在您的布局中包含css/js(如果需要,修复路径)。

将OneupUploaderBundle添加到您的AppKernel.php

    new Oneup\UploaderBundle\OneupUploaderBundle(),

并将以下内容添加到config.yml

# Read the documentation: https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/index.md
oneup_uploader:
    chunks:
        storage:
            directory: "%kernel.cache_dir%/uploader/chunks"
    mappings:
        donjohn_media:
            namer: Donjohn\MediaBundle\Uploader\Naming\OriginalNamer
            use_orphanage: true
            frontend: fineuploader

您可以更改上传块的尺寸或用于渲染fineuploader框架的模板

donjohn_media:
    chunk_size: 50M #default
    fine_uploader_template: YourFineUploaderTempalte.twig.html

自定义MediaProvider

要实现自己的提供者,扩展BaseProvider并重新定义抽象函数。
自动装配应该能解决问题...

Api平台

该包与APIPlatform兼容。