2017-02-12 12 views
2

Я использую Sonata Admin 3.13 с Symfony 3.1 и хочу отображать загруженное изображение в списке. У меня есть PaintingAdmin со следующими ListFields:Symfony3.1 & Sonata Admin - шаблон поля списка игнорируется

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('name', null, ['label' => 'Name']) 
     ->add('category', null, ['label' => 'Kategorie']) 
     ->add('size', null, ['label' => 'Größe']) 
     ->add('imageFilename', null, [ 
      'template' => 'sonata:imagepreview.html.twig', 
      'label' => 'Bild' 
     ]); 
    ; 
} 

и шаблон на app/Resources/views/sonata/imagepreview.html.twig

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} 
{% block field %} 
    <div> 
     {% if object.imageFilename != null %} 
      <img src="{{ asset('uploads/images/' ~ object.imageFilename) }}" class="img-responsive" /> 
     {% else %} 
      <div class="warn">Kein Bild</div> 
     {% endif %} 
    </div> 
{% endblock %} 

но шаблон укомплектовать игнорируется, она отображается только значение imageFilename. Все остальное работает нормально (т. Е. label показано как Bild)

ответ

0

Вы должны указать Сонате, что используете пользовательский шаблон.

Вы можете сделать это в вашем объявлении администратора службы:

librinfo_crm.admin.organism: 
     class: Librinfo\CRMBundle\Admin\OrganismAdmin 
     arguments: [~, Librinfo\CRMBundle\Entity\Organism, LibrinfoCRMBundle:OrganismAdmin] 
     tags: 
      - name: sonata.admin 
       manager_type: orm 
       group: Customers Relationship Management 
       label: librinfo.crm.organism_admin.label 
       label_translator_strategy: blast_core.label.strategy.librinfo 
     calls: 
      - [ setTemplate, [list, LibrinfoCRMBundle:OrganismAdmin:list.html.twig]] 

или вы можете переопределить массив $ шаблоны() вашего класса администратора.

Если вы хотите использовать «классический» Symfony шаблон наследования пользовательский шаблон должен иметь один и тот же путь муравья имя, чем оригинал, так что если вы пытаетесь заменить SonataAdminBundle:CRUD:base_list_field.html.twig пользовательский шаблон должен быть в app/Resources/view/CRUD/base_list_field.html.twig

0

Я предлагаю что вы используете полный путь к шаблону: приложение/Ресурсы/просмотров/соната/imagepreview.html.twig

->add('imageFilename', null, [ 
     'template' => 'sonata\imagepreview.html.twig', 
     'label' => 'Bild' 
    ]); 

Итак, как вы можете sonata\imagepreview.html.twig является относительно приложения/Ресурсы/просмотров/папки.

В Symfony из версии < 4.x у нас есть два способа размещения прутик tempates:

  1. Внутри пучка

    RealPath: `src\AppBundle\Resources\views\MyCustomFolder\my_file.html.twig` 
    
    Path: `AppBundle::MyCustomFolder\my_file.html.twig` 
    
  2. Outside пучка в папка приложения

    RealPath: `app\Resources\views\MyCustomFolder\my_file.html.twig` 
    
    Path: `MyCustomFolder\my_file.html.twig` 
    

Вы можете прочитать в Official Symfony documantation