Я пытаюсь отобразить изображение моего продукта в списке администраторов сонаты.
На моей странице индекса я отображаю свой продукт следующим образом:
{% for entity in entity %}
<span><img alt="airline" width="500" height="400" src="{{ entity.image.path}}" ></span>
{% endfor %}
Я пытался сделать то же самое, но это не работает.
Поэтому я решил установить LiipImagineBundle и вот что я сделал.
ProductAdmin.php
->add('image.id', null, array('template' => 'ApplicationSonataBackcommerceBundle::list_image.html.twig'))
list_image.html.twig
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
<div>
{% for entity in entity %}
<img src="{{ entity.image.path | imagine_filter('productThumb') }}" />
{% endfor %}
</div>
{% endblock %}
config.yml
liip_imagine:
resolvers:
default:
web_path: ~
filter_sets:
cache: ~
productThumb:
quality: 90
filters:
thumbnail: { size: [47, 42], mode: outbound }
У меня есть эта ошибка, когда я обновляю страницу:
Исключение было сгенерировано во время рендеринга шаблона.
(«Примечание: неопределенный индекс: сущность») в
ApplicationSonataBackcommerceBundle :: list_image.html.twig в строке 4.
РЕДАКТИРОВАТЬ
Это метод полного добавления:
/**
* @param \Sonata\AdminBundle\Datagrid\ListMapper $listMapper
*
* @return \Sonata\AdminBundle\Datagrid\ListMapper
*/
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('user.id')
->add('image.id', null, array('template' => 'ApplicationSonataBackcommerceBundle::list_image.html.twig'))
->add('airport', null, array('editable' => true))
->add('airport1', null, array('editable' => true))
->add('departuredate')
->add('arrivaldate')
->add('price')
->add('telephone', null, array('editable' => true))
->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'delete' => array(),
)
));
return $listMapper;
}
Это сгенерированный HTML только из двух изображений:
<td class="sonata-ba-list-field sonata-ba-list-field-integer" objectId="7">
<div>
<img src="http://127.0.0.1/symfony/web/app_dev.php/media/cache/resolve/productThumb/symfony/web/airline/Emirates.png" />
</div>
</td><td class="sonata-ba-list-field sonata-ba-list-field-integer" objectId="9">
<div>
<img src="http://127.0.0.1/symfony/web/app_dev.php/media/cache/resolve/productThumb/symfony/web/airline/Singapore_Airlines.svg" />
</div>
</td>
Это потому, что вы изменили cache_prefix
,
в оригинальный документ , извлечь:
For example with this bundle the following is possible:
<img src="{{ '/relative/path/to/image.jpg' | imagine_filter('thumbnail') }}" />
Префикс кэша по умолчанию: cache_prefix: media/cache
потому что он генерируется в www.yoursite/media/cache/
Вы изменились /symfony/web/media/cache/cache/airline
Так что, если вы отправите это по {{ entity.image.path | imagine_filter('productThumb') }}
путь не разыскиваемый родственник …
Вы отправляете это сейчас /symfony/web/media/cache/cache/airline/your_image.jpg
Других решений пока нет …