positibe/media-bundle

Symfony Positibe 媒体Bundle

安装: 20

依赖者: 1

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

1.1.0 2019-03-26 15:58 UTC

README

此Bundle为Symfony-Cmf MediaBundle提供实体。

安装

要安装此Bundle,只需添加依赖的Bundle

php composer.phar require positibe/media-bundle

接下来,确保在您的应用程序内核中启用这些Bundle

<?php
// config/kernel.php
return [
    // ...
    Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
    Positibe\Bundle\MediaBundle\PositibeMediaBundle::class => ['all' => true],
];

配置

创建您的配置文件

# config/packages/positibe_media.yml
parameters:
    positibe_media.media_class: 'Positibe\Bundle\MediaBundle\Entity\Media'
    positibe_media.url_path: 'uploads/media'
    positibe_media.web_root: "%kernel.root_dir%/../public/"
    positibe_media.cache_prefix: media/cache
    positibe_media.upload_file_role: ROLE_EDITOR

twig:
    form_themes:
        - 'PositibeMediaBundle::_media_type.html.twig'

liip_imagine:
    resolvers:
        default:
            web_path:
                web_root: "%positibe_media.web_root%"
                cache_prefix: "%positibe_media.cache_prefix%"
    loaders:
        default:
            filesystem:
                data_root: "%positibe_media.web_root%"  # %kernel.root_dir%/../web/
    filter_sets:
        # define the filter to be used with the image preview
        image_upload_thumbnail:
            filters:
                thumbnail: { size: [100, 100], mode: outbound }
        image_thumbnail:
            filters:
                thumbnail: { size: [250, 250], mode: outbound }
        image_thumbnail_small:
            filters:
                thumbnail: { size: [50, 50], mode: outbound }
        image_preview:
            filters:
                thumbnail: { size: [190, 190], mode: outbound }

为管理媒体创建自己的路由

[yaml]
# config/routing/positibe_media.yaml
positibe_media_image_display:
    path: /media/display/{path}
    defaults: { _controller: PositibeMediaBundle:File:display }
    requirements:
        method: GET
        path: .*

positibe_media_download:
    path: /media/download/{path}
    defaults: { _controller: PositibeMediaBundle:File:download }
    requirements:
        method: GET
        path: .*

positibe_media_upload:
    path: /media/image/upload/{editor}
    defaults: { _controller: PositibeMediaBundle:File:upload, editor: ckeditor, _format: json }
    requirements:
        method: POST

_liip_imagine:
   resource: "@LiipImagineBundle/Resources/config/routing.yaml"

要集成Positibe管理

[yaml]
 # config/routing/admin/positibe_media.yaml
positibe_media_update:
    path: /multimedias/{id}
    methods: [GET, PUT]
    defaults: { _controller: PositibeMediaBundle:Media:update }

positibe_media_delete:
    path: /multimedias/{id}
    methods: [DELETE]
    defaults: { _controller: PositibeMediaBundle:Media:update }

positibe_media_index:
    path: /multimedias
    defaults: { _controller: PositibeMediaBundle:Media:index }

**注意:** 如果您使用Ckeditor,必须将ROLE_EDITOR角色设置为可以上传图片的用户

如果尚未创建,需要创建一些特定文件夹以允许上传

[bash]
mkdir public/uploads
mkdir public/uploads/media
chmod -R 0777 public/uploads
mkdir public/media
mkdir public/media/cache
chmod -R 0777 public/media

注意:您必须配置一些Gedmo Doctrine扩展(如timestampable、sortable、translatable)

文档

文档在此可用。

使用媒体实体的简单示例

[php]
//$media = new Media(); //Default provider MediaProvider::getName()
$media = new Media(ImageProvider::getName()); //Image provider
$media->setBinaryContent(__DIR__ . '/../Resources/public/img/positibelabs_logotipo 2.jpg');
$manager->persist($media);
$manager->flush();

使用相册实体的简单示例

[php]
$media = new Media(ImageProvider::getName());
$media->setBinaryContent(__DIR__.'/../../Resources/public/img/positibelabs_logotipo 2.jpg');

$gallery = new Gallery();

$gallery->setName('PositibeLabs Gallery'); //This step is not necessary. Default name is `gallery`
$gallery->setDefaultFormat('.zip'); //This step is not necessary. Default format is `.jpg`

//You can optional also set title and body content to each media in the gallery
$gallery->addMedia($media, 'PositibeLabs', 'PositibeLabs is developing great open-source libraries');

$manager->persist($gallery);
$manager->flush();