Liipimaginbundle — изображения в цикле FOR

У меня возникла проблема с отображением миниатюр с помощью Liipimaginebundle в шаблоне TWIG.

Я делаю индекс:

return $this->render('ad/index.html.twig', array(
        'ads' => $ads,
    ));

а в index.html.twig я использую цикл FOR для отображения миниатюр, связанных с рекламой.

{% for ad in ads %}
   //with parameter - doesn't work
   {% set img = ad.mainPhoto %}   
   <img src="{{ img | imagine_filter('thumb') }}" />  

   //working fine
   <img src="{{ asset('/uploads/2.png') | imagine_filter('thumb') }}" />
{% endfor %}

mainPhoto хранит путь к фотографии, относящейся к текущему объявлению, например:

/uploads/2.png

При использовании параметра img у меня есть исключение:

Во время рендеринга шаблона возникло исключение ("Параметр "путь" для маршрута "liip_imagine_filter" должен соответствовать ".+" ("" задано) для создания соответствующего URL-адреса".).

Как правильно определить путь в этом случае?


person mmateja    schedule 02.03.2017    source источник
comment
Можете ли вы показать нам тип и содержание ad.mainPhoto?   -  person Veve    schedule 02.03.2017
comment
@Veve ad.mainPhoto — это строка с путем, например. /загрузки/2.png   -  person mmateja    schedule 02.03.2017


Ответы (1)


Вы передаете только путь в виде строки в imagine_filter, добавьте asset, и он должен работать:

{% for ad in ads %}
   {% set img = ad.mainPhoto|default %}
   {% if img <> "" %}
       <img src="{{ asset(img) | imagine_filter('thumb') }}" />  
   {% endif %}
{% endfor %}
person Veve    schedule 02.03.2017
comment
Спасибо за помощь! Это было мое плохое... К сожалению, у меня было одно объявление без основной фотографии... это было причиной исключения. Кстати изображение | Imagine_filter('thumb') тоже работает :) - person mmateja; 02.03.2017
comment
Это работает... до тех пор, пока у вас не будет разных сред активов. (Вспомните CDN, сервер для статических файлов, ...). Я добавил проверку для mainPhoto на основе первой части вашего комментария. - person Veve; 03.03.2017