2016-03-18 2 views
3

Я пытаюсь отобразить изображение моего продукта в списке администраторов сонаты.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, и это то, что я сделал.

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 } 

У меня есть эта ошибка при обновлении страницы:

Исключение было брошено во время рендеринга шаблона («Извещение: Undefined индекс: сущности») в ApplicationSonataBackcommerceBundle :: list_image.html.twig в строке 4.

EDIT

Это полный метод дополню:

/** 
* @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> 
+0

Вы не передаете шаблон объекта в шаблон. Вы можете показать полный метод 'add' – Naumov

+0

i обновил мое сообщение, вы можете проверить сверху. – Sirius

+0

Ребята, я все еще застрял. Пожалуйста, мне нужна помощь. – Sirius

ответ

1

Это потому, что вы изменили cache_prefix.

В original doc, экстракт:

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

+0

Я пробовал с вашим кодом и уже намного лучше. Это показывает, что изображение должно быть там, но оно не отображает его.Это скриншот, чтобы вы могли понять, что я имею в виду: [Здесь] (http://hpics.li/92e2d4a) – Sirius

+0

Извините за задержку ответа. Я пробовал много вещей, но изображение все еще не видно. Сначала я заметил, что папка 'media/cache' не была сгенерирована. Поэтому я запускаю следующую команду: 'liip: imag: cache: resolve airlines/Emirates.png'. Теперь у меня есть сгенерированная папка. Я решил изменить «cache_prefix» с «cache_prefix: media/cache» на '/ symfony/web/media/cache/cache/airlines'. Я также запускаю следующую команду 'assets: install web /'. Изображение по-прежнему не отображается. В верхней части моего сообщения есть сгенерированный html. – Sirius

+0

Вы имеете ввиду сгенерированный html -> исходный код веб-страницы? – Sirius

 Смежные вопросы

  • Нет связанных вопросов^_^