Symfony2与KnpGaufrette与S3与LiipImagine

时间:2013-06-05 09:45:54

标签: php symfony amazon-s3 liipimaginebundle

我正在尝试在我的Symfony2项目中运行LiipImagine,使用KnpGraufette Bundle访问我的Amazon AWS S3帐户。

现在我已经可以访问S3,存储和加载数据等等。 我可以使用LiipImagine过滤本地图像。 到目前为止一切都很好。

现在我使用以下配置将我的gaufrette / s3服务和本教程中显示的LiipImagine服务粘合在一起。

services:
  amazonS3:
    class: AmazonS3
    arguments:
      options:
        key: '%aws_key%'
        secret: '%aws_secret_key%'
        certificate_authority: '%kernel.root_dir%/config/cacert.pem'
  gaufrette.amazonS3_adapter:
    class: Gaufrette\Adapter\AmazonS3
    arguments:
      service: '@amazonS3'
      bucket_name: '%aws_bucketname%'
  gaufrette.amazonS3.fileSystemService:
    class: Gaufrette\Filesystem
    arguments:
      adapter: '@gaufrette.amazonS3_adapter'
  our.fs.dataloader.s3:
    class: Liip\ImagineBundle\Imagine\Data\Loader\FileSystemLoader
    arguments:
      - "@liip_imagine"
      - "@gaufrette.amazonS3.fileSystemService"
    tags:
      - { name: 'liip_imagine.data.loader', loader: 'gaufrette.amazonS3.fileSystemService' }

liip_imagine:
  filter_sets:
    s3_clientsbar:
      data_loader: 'our.fs.dataloader.s3'
      filters:
        thumbnail: { size: [50, 50], mode: outbound, allow_upscale: true }

使用LiipImagine过滤S3资源时,我收到以下错误:

ErrorException: Catchable Fatal Error: Argument 2 passed to Liip\ImagineBundle\Imagine\Data\Loader\FileSystemLoader::__construct() must be an array, object given, called in

我的过滤测试代码如下:

$imagemanagerResponse = $this->container->get('liip_imagine.controller')->filterAction($this->getRequest(),'the-actual-existing-loadable-aws-id' , 's3_clientsbar');

此外:一些主持人可以添加Tag Gaufrette,KnpGaufrette或KnpGaufretteBundle吗?

1 个答案:

答案 0 :(得分:3)

我认为您不必定义自己的gaufrette amazon s3 adaper服务......只需使用gaufette捆绑配置。

只需使用liip配置,例如给定的https://github.com/liip/LiipImagineBundle/blob/master/Resources/doc/data-loader/stream.md

gaufrette + liip配置应该如下所示:

services:
    amazonS3:
        class: AmazonS3
        arguments:
            options:
                key: '%aws_key%'
                secret: '%aws_secret_key%'
                certificate_authority: '%kernel.root_dir%/config/cacert.pem'

    liip_imagine.data.loader.stream.profile_photos:
        class: "%liip_imagine.data.loader.stream.class%"
        arguments:
            - "@liip_imagine"
            - 'gaufrette://amazon_fs/'
        tags:
            - { name: 'liip_imagine.data.loader', loader: 'stream.profile_photos' }

knp_gaufrette:
    stream_wrapper: ~
    adapters:
        local_adapter:         
            local:
                directory: %kernel.root_dir%/../web/uploads
        amazon_s3_adapter:
            amazon_s3_id: amazonS3
            bucket_name: mybucketname
            options:
                create: true

    filesystems:               
        local_fs:
            adapter:    local_adapter
        amazon_fs:
            adapter: amazon_s3_adapter

请注意,在上面的示例中,我注册了两个本地和亚马逊s3适配器。