Я хочу получить миниатюру изображения, указанную в области списка, я не знаю, как это сделать, может кто-нибудь мне помочь. У меня есть заголовок в конце. Я использую пакет Sonata adim и следую его официальному документу.
вот мой imageAdmin.php
namespace swaam\ImageUploaderBundle\Admin; use Sonata\AdminBundle\Admin\Admin; use Sonata\AdminBundle\Datagrid\ListMapper; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Form\FormMapper; class ImageAdmin extends Admin { // Fields to be shown on create/edit forms protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('caption', 'ckeditor', array('label' => 'Ca ption')) // ->add('file', 'entity', array('class' => 'swaam\ImageUploaderBundle\Entity\image')) ->add('file', 'file', array('data_class' => 'Symfony\Component\HttpFoundation\File\File' ,'property_path' => 'file' )) ->end(); //if no type is specified, SonataAdminBundle tries to guess it ; } // Fields to be shown on filter forms protected function configureDatagridFilters(DatagridMapper $datagridMapper) { $datagridMapper ->add('caption') ->add('thumbpath') ; } // Fields to be shown on lists protected function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('caption') // ->add('thumbpath') ->add('thumbpath') ; } }
Вот мой метод configureListFields после обновления
protected function configureListFields(ListMapper $listMapper) { $listMapper // ->addIdentifier('caption') // ->add('thumbpath') // ->add('thumbpath') ->add('thumbpath', null, array('template' => 'swwamImageUploaderBundle:Admin:list_image.html.twig')) // ->add('thumbpath', null, array('template' => 'swwamImageUploaderBundle:Admin:list_image.html.twig')) ; }
и вот моя ветка
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} {% block field%} <div> {#<img src="{{ image.webPath | imagine_filter('gallery_element_admin') }}" />#} //<img src="{{ app.request.scheme ~ '://' ~ app.request.host ~ '/' ~ image.getthumbWebPath }}" /> {# or whatever to create src of image #} </div> {% endblock %}
Самый простой способ – создать собственный шаблон поля администратора. В методе configureListFields добавьте:
->add('path', null, array('template' => 'AcmeBundle:Admin:list_image.html.twig'))
И создайте файл AcmeBundle / Resources / views / Admin / list_image.html.twig с контентом:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} {% block field%} <div> <img src="{{ object.webPath | imagine_filter('gallery_element_admin') }}" /> {# or whatever to create src of image #} </div> {% endblock %}
Мне нужно было что-то похожее, и это мой результат через некоторое время в Интернете.
Я добавил шаблон tbe в методе configureListFields из класса admin:
->add('culture', "string", array( 'template' => 'AEWBackendBundle:CRUD:list_culture_image.html.twig' ))
Я создал шаблон в представлении:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} {% block field%} <div> {% set flag = web_path ~ 'images/flags/' ~ object.culture.name(object) ~ '.png' %} {% if file_exists(flag) %} <img id="culture_image" title="{{ object.culture }}" src="/images/flags/{{ object.culture.name }}.png" height="15" /> {% else %} <img id ="culture_image" title="en" src="/images/flags/default.png" height="15" /> {% endif %} </div> {% endblock %}
В параметрах.yml:
web_path: %kernel.root_dir%/../web/
В config.yml:
twig: globals: web_path: %web_path%
Создал файл TwigExtension.php, чтобы использовать функцию file_exists PHP как расширение ветки
<?php namespace AEW\FrontendBundle\Services\Extension; use \Twig_Filter_Function; use \Twig_Filter_Method; class TwigExtension extends \Twig_Extension { /** * Return the functions registered as twig extensions * * @return array */ public function getFunctions() { return array( 'file_exists' => new \Twig_Function_Function('file_exists'), ); } public function getName() { return 'twig_extension'; } }
Добавлены строки конфигурации в config.yml для нового расширения:
parameters: aew.twig_extension.class: AEW\FrontendBundle\Services\Extension\TwigExtension services: aew.twig_extension: class: %aew.twig_extension.class% tags: - { name: twig.extension }
Надеюсь, это поможет вам или кому-либо еще, кто ищет эту информацию в будущем.