Symfony3.1& Sonata Admin - 列表字段的模板被忽略

时间:2017-02-12 14:23:59

标签: symfony sonata-admin symfony-sonata sonata symfony-3.1

我将Sonata Admin 3.13与Symfony 3.1一起使用,并希望在列表视图中显示上传的图像。我有一个带有以下ListFields的PaintingAdmin:

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

2 个答案:

答案 0 :(得分:0)

您需要告诉Sonata您正在使用自定义模板。

您可以在管理服务声明中执行此操作:

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]]

或者您可以覆盖管理类的$ templates数组()。

如果您想使用“经典”symfony模板继承,您的自定义模板应具有与原始模板相同的路径蚂蚁名称,因此,如果您尝试替换SonataAdminBundle:CRUD:base_list_field.html.twig,则自定义模板应位于app/Resources/view/CRUD/base_list_field.html.twig中}

答案 1 :(得分:0)

我建议您使用模板的完整路径: 应用程序/资源/视图/奏/ imagepreview.html.twig

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

因此,sonata\imagepreview.html.twig可以相对于app / Resources / views /文件夹。

在版本的symfony中&lt; 4.x我们有两种放置树枝的方法:

  1.   

    在包内

    RealPath: `src\AppBundle\Resources\views\MyCustomFolder\my_file.html.twig`
    
    Path: `AppBundle::MyCustomFolder\my_file.html.twig`
    
  2.   

    在app文件夹中的包之外

    RealPath: `app\Resources\views\MyCustomFolder\my_file.html.twig`
    
    Path: `MyCustomFolder\my_file.html.twig`
    
  3. 您可以在Official Symfony documantation

    中阅读更多内容