在奏鸣曲管理员列表中渲染图像.[LiipImagineBundle]


Render image in sonata admin List. [LiipImagineBundle]

我正在尝试在奏鸣曲管理员列表中呈现我的产品图像。

在我的索引页面中,我像这样渲染我的产品:

    {% for entity in entity %}
<span><img alt="airline" width="500" height="400" src="{{  entity.image.path}}" ></span>  
    {% endfor %}

我试图做同样的事情,但它不起作用。

所以我决定安装LiipImagineBundle,这就是我所做的。

产品管理员.php

->add('image.id', null, array('template' => 'ApplicationSonataBackcommerceBundle::list_image.html.twig'))

list_image.html.树枝

{% 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 %}

配置.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