zeglup / media-bundle
源自Donjohn/MediaBundle,一个受sonata media bundle启发的简单媒体包
Requires
- php: >=7.1
- ext-fileinfo: *
- ext-gd: *
- ext-mbstring: *
- doctrine/doctrine-bundle: ^1.6
- symfony/filesystem: ^3.4 || ^4.1
- symfony/form: ^3.4 || ^4.1
- symfony/framework-bundle: ^3.4 || ^4.1
- symfony/security-bundle: ^3.4 || ^4.1
- symfony/templating: ^3.4 || ^4.1
- symfony/twig-bundle: ^3.4 || ^4.1
- symfony/validator: ^3.4 || ^4.1
- twig/twig: ^1.28 || ^2.0
Suggests
- api-platform/core: for the awesome api feature
- liip/imagine-bundle: to get filters feature and more for your images
- oneup/uploader-bundle: for the awesome upload of big files feature
README
向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兼容。