配置 LiipImagineBundle Symfony 以与 Flysystem 一起工作

Configuring LiipImagineBundle Symfony to work with Flysystem

我一直在尝试配置 CDN (S3) 以与 LiipImagineBundle 一起使用,但是当它请求不存在的服务时总是卡住。

这是什么意思?

The value of the filesystem_service property must be a service that returns an instance of League\Flysystem\Filesystem.

从这里开始:http://symfony.com/doc/current/bundles/LiipImagineBundle/cache-resolver/flysystem.html

这里:http://symfony.com/doc/current/bundles/LiipImagineBundle/data-loader/flysystem.html

我尝试创建一个 returns League\Flysystem\Filesystem 实例的服务,如下所示:

league.flysystem.s3adaptor:
    class: League\Flysystem\AwsS3v3\AwsS3Adapter
    arguments: ['@acme.s3_client', '%amazon.s3.bucket%', 's3_fs', '@?']

league.flysystem.filesystem:
    class: League\Flysystem\Filesystem
    arguments: ['@league.flysystem.s3adaptor', '@?']
    calls:
        - [addPlugin, ['@oneup_flysystem.plugin.list_with']]

我不确定这是否正确,但我无法正常工作。

如有任何帮助或建议,我们将不胜感激。

我是对的,我只是稍微错误地配置了我的 LiipImagineBundle。

要return League\Flysystem\Filesystem 的实例,您首先需要为要使用的适配器创建一个服务,在本例中,league.flysystem.s3adaptor 会执行此操作。然后将其作为参数传递给 league.flysystem.filesystem。

league.flysystem.s3adaptor:
    class: League\Flysystem\AwsS3v3\AwsS3Adapter
    arguments: ['@acme.s3_client', '%amazon.s3.bucket%']

league.flysystem.filesystem:
    class: League\Flysystem\Filesystem
    arguments: ['@league.flysystem.s3adaptor']
    calls:
        - [addPlugin, ['@oneup_flysystem.plugin.list_with']]

LiipImagineBundle 配置:

liip_imagine:
    resolvers:
            profile_photos:
                flysystem:
                    filesystem_service: league.flysystem.filesystem
                    root_url:           "https://s3.eu-west-2.amazonaws.com/nameofthebucket/"
                    cache_prefix:       media/cache
                    visibility:         public
    loaders:
        profile_photos:
            flysystem:
                filesystem_service: league.flysystem.filesystem
    data_loader: profile_photos
    cache: profile_photos