В проекте Symfony4 я использую LiipImagineBundle для изменения размера изображений.Для этого есть хороший фильтр Twig, так что вы можете использовать его в своих шаблонах:
<img src="{{ asset('images/my_image.jpg') | imagine_filter('downscale_800') }}" alt="">
Затем LiipImagine решит вернуть URI, который необходимо разрешить в измененную и кэшированную версию, или предоставить URIна уже кэшированную версию (которая в большинстве случаев приведет к ответу 304).Затем в вашем шаблоне отображается правильный URI.
Но в моем проекте я также загружаю данные API через Javascript.Например, сообщения в блоге, где сообщение может содержать URI для изображения.
Теперь мой вопрос: как лучше всего изменить размер этого изображения с помощью LiipImagine?
Я попробовал пару вариантов:
- В контроллере API установите URI для измененного изображения в модели поста блога.Но тогда вам нужно обновить контроллер, если вы хотите использовать разные размеры в вашем представлении.И вы должны установить эти URI в каждой функции каждого контроллера, который возвращает сообщение в блоге.
- В репозитории service / repository установите URI при загрузке моделей сообщений в блоге.Но, опять же, это будет проблемой, когда вам нужны другие размеры и они не соответствуют «разделению проблем».
- Создайте контроллер, который будет получать путь к изображению и изменять размеры параметров.Затем этот контроллер будет использовать LiipImagine для изменения размера изображения и получения кэшированного URI.Затем контроллер будет перенаправлять на URI, созданный Liip.Но это обойдёт управление кешем Liip и всегда приведет к перенаправлению.
Я не нашел никаких намеков в документации LiipImagine, поэтому было бы здорово, если бы кто-то мог поделиться некоторыми советами и хитростями.