Задать вопрос

Как правильно загружать и выводить изображения в Symfony?

Изучаю Symfony 4, делая блог и галерею.

У галереи имеется своя папка для загрузки картинок, указываю ее в параметрах:
parameters:
    upload_directory: '%kernel.project_dir%/public/up'

    gallery_upload: '%upload_directory%/gallery'
    documents_upload: '%upload_directory%/docs'
    files_upload: '%upload_directory%/files'


При загрузке картинки сохраняю ее в контроллере с помощью простого сервиса FileUploader - он сохраняет картинку по пути, который передаю параметром.
$uploadedFile = $request->files->get('image')['fileUploader'];
    $fileName = $fileUploader->upload($uploadedFile, $this->getParameter('gallery_upload'));
    $image->setImage($fileName);

Тут я сделал передачу пути через параметр, а не через конструктор, чтобы использовать единственный сервис FileUploader для всех загрузок - куда сохранять фаил, указываем передачей параметра. Правильно ли это, или для загрузки каждого типа фаила (документ/счет, архив, картинка) нужен свой загрузчик? Фактически логика загрузчика одна - переименовать полученный фаил и сохранить его по указанному пути. Это первый вопрос.

Второй связан с выводом картинки (и других типов фаилов) в шаблонизаторе Twig. На примере галереи я получаю в шаблоне объект изображения и имя фаила:
<img src="/up/gallery/{{ image.filename }}">
Но как правильнее передать путь к фаилу при его выводе? Добавлять дополнительные параметры в массив `parameters:`, типа:
parameters:
    gallery_web: '/gallery/'
    documents_web: '/docs/'
    files_web: '/files/'

Как я понимаю, в этом случае нужно написать Twig расширение, которое будет запрашивать нужный параметр, типа:
<img src="{{ getParameter('gallery_web') }}{{ image.filename }}">

... или есть более красивый вариант?

Заранее спасибо за помощь!
  • Вопрос задан
  • 2169 просмотров
Подписаться 3 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы