phpguild/media-object-bundle

Symfony 媒体对象 Bundle

安装: 219

依赖者: 0

建议者: 0

安全性: 0

星星: 3

关注者: 2

分支: 0

开放问题: 4

类型:symfony-bundle

v1.2.9 2021-09-16 05:07 UTC

README

功能

  • Api Platform 支持
  • Base64 文件规范化
  • URL 文件规范化

安装

使用 composer 安装

composer req phpguild/media-object-bundle

配置

创建文件 config/packages/phpguild_media_object.yaml

phpguild_media_object:
    default_filter: 'original'
    media_prefix: 'media'
    original_prefix: 'media/original'
    cache_prefix: 'media/cache'
    resolve_prefix: 'media/cache/resolve'
    resolve_filter_prefix: 'media/cache/resolve/{filter}'
    web_root: '%kernel.project_dir%/public'
    data_root: '%kernel.project_dir%/public/media/original'

命令支持

https://symfony.ac.cn/doc/current/routing.html#router-generate-urls-commands

编辑文件 .env

###> symfony/request ###
REQUEST_CONTEXT_SCHEME=https
REQUEST_CONTEXT_HOST=localhosturl
REQUEST_CONTEXT_PORT=
REQUEST_CONTEXT_PATH=
###< symfony/request ###

编辑文件 config/packages/routing.yaml

parameters:
    router.request_context.scheme: '%env(REQUEST_CONTEXT_SCHEME)%'
    router.request_context.host: '%env(REQUEST_CONTEXT_HOST)%'
    router.request_context.port: '%env(REQUEST_CONTEXT_PORT)%'
    router.request_context.base_url: '%env(REQUEST_CONTEXT_PATH)%'
    asset.request_context.base_path: '%router.request_context.base_url%'
    asset.request_context.secure: true

编辑文件 config/packages/liip_imagine.yaml

liip_imagine:
    driver: gd
    default_image: '/media/default.jpg'
    
    loaders:
        default:
            filesystem:
                data_root: '%kernel.project_dir%/public/media/original'

    resolvers:
        default:
            web_path:
                web_root: '%kernel.project_dir%/public'
                cache_prefix: 'media/cache'
    
    filter_sets:

        _post_upload:
            quality: 95
            filters:
                auto_rotate: ~
                thumbnail: { size: [2048], mode: outbound }

使用方法

自定义使用

use Doctrine\ORM\Mapping as ORM;
use PhpGuild\MediaObjectBundle\Model\MediaObjectInterface;
use PhpGuild\MediaObjectBundle\Annotation as MediaObject;

class Photo implements MediaObjectInterface
{
    /**
     * @ORM\Column(type="string")
     * @MediaObject\Uploadable(urlProperty="fileUrl")
     */
    protected $file;

    protected $fileUrl;

使用预定义特性

use PhpGuild\MediaObjectBundle\Model\File\FileInterface;
use PhpGuild\MediaObjectBundle\Model\File\FileTrait;

class Photo implements FileInterface
{
    use FileTrait;

API Platform 桥接

编辑文件 config/services.yaml

imports:
    - { resource: '@PhpGuildMediaObjectBundle/Resources/config/bridge/api-platform.yaml' }

编辑文件 config/routes.yaml

api_phpguild_media_object_upload_image:
    path: /api/upload/image
    controller: PhpGuild\MediaObjectBundle\Bridge\ApiPlatform\Action\UploadImageAction
    methods: POST
    defaults:
        _api_item_operation_name: post_upload_image