Symfony2: используйте LiipImagineBundle с KnpGaufretteBundle и Amazon S3 в шаблоне Twig

Я не могу заставить LiipImagineBundle распознавать пути потока. Вместо загрузки изображения и применения указанного набора фильтров он просто берет путь потока и обрабатывает его, как если бы он был обычным веб-путем.

Это конфигурация, которую я смог собрать из разных источников. Я не мог найти решение этой проблемы точно. С точки зрения 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

Twig:

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

Производит:

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

2

Решение

Я сделал это несколько недель назад, но я не использовал s3 для кеша. Ваши проблемы, кажется, с пути изображения. Попробуйте это на ветке:

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

Поскольку ваш загрузчик данных знает, какой поток вы используете, распознаватель кэша знает URL, по которому находится файл, тогда вам просто нужно передать имя файла.

Еще одна вещь, которая отличается от вашей конфигурации к моей, заключается в том, что у меня есть ведущий / на марлевом пути:

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

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]