Symfony2:在Twig模板中使用LipImagineBundle和KnpGaufretteBundle以及Amazon S3

时间:2014-09-26 09:30:44

标签: php symfony amazon-s3 liipimaginebundle gaufrette

我无法让LiipImagineBundle识别流路径。它不是加载图像并应用指定的过滤器集,而是采用流路径并将其视为正常的Web路径。

这是我能够从各种来源拼凑起来的配置。我找不到任何解决这个问题的确切方法。就LiipImagineBundle而言,这些设置似乎没有取得任何成果。不会抛出任何错误或警告,日志中也没有任何内容。它完全忽略了我的配置。

#/src/Acme/StorageBundle/Resources/config/services.yml
services:
  acme_storage.amazon_s3:
    class:        %acme_storage.amazon_s3.class%
    arguments:
      options:
        key:      %acme_storage.amazon_s3.aws_key%
        secret:   %acme_storage.amazon_s3.aws_secret_key%
        certificate_authority: true

  liip_imagine.binary.loader.stream.amazon_s3:
    class: %liip_imagine.binary.loader.stream.class%
    arguments:
      - @liip_imagine
      - 'gaufrette://amazon_s3/'
    tags:
      - name:   liip_imagine.binary.loader
        loader: stream.amazon_s3

  liip_imagine.cache.resolver.amazon_s3:
    class: Liip\ImagineBundle\Imagine\Cache\Resolver\AmazonS3Resolver
    arguments:
      - @acme_storage.amazon_s3
      - %amazon_s3_bucket_name%
    tags:
      - name: liip_imagine.cache.resolver
        resolver: cache.amazon_s3

# /app/config/config.yml
knp_gaufrette:
  stream_wrapper:
    protocol:     gaufrette
    filesystems:
      amazon_s3:  photo_storage
  adapters:
    photo_storage:
      amazon_s3:
        amazon_s3_id: beebop_storage.amazon_s3
        bucket_name:  %amazon_s3_bucket_name%
        create:       false
        options:
          create:     true
          region:     %amazon_s3_region%
  filesystems:
    photo_storage:
      adapter:        photo_storage
      alias:          photo_storage_filesystem

liip_imagine:
  cache:              cache.amazon_s3
  loaders:
    stream.amazon_s3:
      stream:
        wrapper:      gaufrette://amazon_s3

  filter_sets:
    cache: ~
    event_small:
      data_loader:    stream.amazon_s3
      quality:        75
      filters:
        thumbnail:
          size:       [60, 60]
          mode:       outbound
          allow_upscale: true

嫩枝:

{{ 'gaufrette://amazon_s3/file.jpg'|imagine_filter('event_small') }}

产地:

http://example.com/media/cache/resolve/event_small/gaufrette://amazon_s3/file.jpg

1 个答案:

答案 0 :(得分:0)

我几周前做过,但我没有使用s3作为缓存。您的问题似乎与图像路径有关。在树枝上试试这个:

{{ 'file.jpg'|imagine_filter('event_small') }}

由于您的数据加载器知道您正在使用的流,缓存解析器知道该文件所在的URL,因此您只需传递文件名。

与你的配置不同的另一件事是,我的高压路径上有一个领先的/

liip_imagine:
  loaders:
    stream.amazon_s3:
      stream:
        wrapper:      gaufrette://amazon_s3/

希望它可以提供帮助。