aropixel/sylius-admin-media-plugin

增强 sylius 管理媒体管理功能,支持图片裁剪、库...


README

Aropixel logo

Sylius Admin 媒体插件

使用图像裁剪、库(基于 Artgris 媒体包)增强 sylius 管理媒体管理

目录

演示

插件安装和配置完成后,sylius 资源(产品等)的图像系统将被完整的媒体管理系统所替代。您将能够

  • 上传图片(当然)
  • 打开文件管理器以检索所有上传的图片,并选择其中之一
  • 在保存之前直接在管理界面中自由裁剪图片
  • 选择一个格式,这将强制您以一定的比例裁剪图片

此插件基于 artgris 媒体包和文件管理器。

安装

在 sylius 应用程序中

  • 安装插件: composer require aropixel/sylius-admin-media-plugin

如果插件未在 config/bundles.php 文件中注册,请通过添加 "Aropixel\SyliusAdminMediaPlugin\AropixelSyliusAdminMediaPlugin::class => ['all' => true]," 来注册它

  • 在配置文件夹中创建 aropixel_sylius_admin_media.yaml 并导入插件配置
imports:
    - { resource: "@AropixelSyliusAdminMediaPlugin/Resources/config/app/config.yml" }
  • 在配置/route 文件夹中创建 aropixel_sylius_admin_media.yaml 并导入插件路由
aropixel_sylius_admin_media:
    resource: '@AropixelSyliusAdminMediaPlugin/Resources/config/routes.xml'
  • 在 bundles.php 文件中注册新插件
Artgris\Bundle\FileManagerBundle\ArtgrisFileManagerBundle::class => ['all' => true],
Gregwar\ImageBundle\GregwarImageBundle::class => ['all' => true],
Artgris\Bundle\MediaBundle\ArtgrisMediaBundle::class => ['all' => true],
Aropixel\SyliusAdminMediaPlugin\AropixelSyliusAdminMediaPlugin::class => ['all' => true],
  • 在 "public" 文件夹中创建 'uploads' 文件夹

  • 安装资产

php bin/console assets:install

使用

对于每个资源,您可以定义裁剪格式(比例),您希望在管理界面中裁剪图像。每个定义的裁剪都与 liip 过滤器相关联,以便根据 liip 过滤器的大小自动计算裁剪比例。

例如,假设您在 sylius 应用程序中有一个博客系统,并且您想在主页上显示每个博客帖子的小缩略图。您有两个 sylius 资源:帖子实体和一个帖子图像实体。

  • 首先,您需要为您的帖子实体创建管理表单,还需要为您的帖子图像实体创建管理表单。实体表单将为图片添加 AdminMediaCollectionType
->add('images', AdminMediaCollectionType::class, [
                'entry_type' => PostImageType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false,
                'label' => 'Images'
            ])
  • 帖子图像表单需要扩展插件定义的 ImageType,例如;
use App\Entity\Producer\ProducerImage;
use Aropixel\SyliusAdminMediaBundle\Form\Type\ImageType;
use Symfony\Component\OptionsResolver\OptionsResolver;


final class PostImageType extends ImageType
{

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults(array(
            'data_class' => PostImage::class,
        ));
    }

    public function getBlockPrefix(): string
    {
        return 'app_post_image';
    }
}

  • 然后在 services.yaml 中注册图像表单
    app.form.type.post_image:
        class: App\Form\Type\PostImageType
        tags:
            - { name: form.type }
        arguments: [ '@aropixel_sylius_admin_media.image_crop.crop_ratio_manager', '%app.model.post_image.class%']
  • 在经典的 sylius 应用程序中,您通常使用 liip 过滤器来生成,例如,在图像博客帖子前面的缩略图
liip_imagine:
    resolvers:
        default:
            web_path:
                web_root: "%kernel.project_dir%/public"
                cache_prefix: "media/cache"

    filter_sets:
        home_news:
            quality: 75
            filters:
                strip: ~
                thumbnail:
                    size: [600, 400]
                    mode: outbound
                    allow_upscale: true
  • 当管理员上传博客帖子的图像时,使用此插件,他可以选择一个定义的格式,以便在保存之前以正确的比例裁剪图像,这样图像就非常适合缩略图!以下是在您希望管理员使用 home_news liip 过滤器大小裁剪图像时插件配置
aropixel_sylius_admin_media:

   entities_crops:
       #first you have to define the image entity in which you want to use the crop system
       App\Entity\Producer\ProducerImage:
           # you use the the liip filter id and define a name that will be displayed for selecting this crop
           home_news: "Home news"

您还可以添加默认裁剪格式,适用于所有图像

aropixel_sylius_admin_media:

   entities_crops:
       ...
   default_crops:
       main: "Default"

就这样!您现在可以在管理界面中选择一个格式,并以特定的比例裁剪它,使其非常适合您的页面!

许可证

Aropixel 博客包采用 MIT 许可证