Несколько полей (типа 'url') в одном столбце списка в SonataAdmin - PullRequest
0 голосов
/ 04 июля 2018

У меня есть объект Symfony, который (опционально) включает в себя файл «вложения». Я хотел бы представить две разные ссылки на вложение (одну для «загрузки», одну для «просмотра») в столбце single представления списка объектов списка. Пока у меня есть это:

class MyEntityAdmin extends AbstractAdmin
{
  /*...*/
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
        /*...*/
            ->add('attachmentDownloadTitle', 'url', [
                'label' => 'download',
                'route' => [
                    'name' => 'get-my-entity-attachment',
                    'parameters' => ['disposition'  => 'download'],
                    'identifier_parameter_name' => 'id',
                    'absolute' => false,
                    ],
                ])
            ->add('attachmentViewTitle', 'url', [
                'label' => 'view',
                'route' => [
                    'name' => 'get-my-entity-attachment',
                    'parameters' => ['disposition'  => 'view'],
                    'identifier_parameter_name' => 'id',
                    'absolute' => false,
                    ],
                ])
        /*...*/
        ;
    }
}

, который работает как положено, за исключением того, что (конечно) создает два столбца (один со ссылкой «скачать», другой со ссылкой «просмотр»). Есть ли способ «объединить» несколько полей в одном столбце в представлении списка? Или я пойду с типом поля «html» и сам создам полное содержимое поля?

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, что самый простой способ - использовать любой тип с пользовательским шаблоном, который выводит две ссылки.

->add('filename', 'text', array(        
     'template' => '@AppBunle/Admin/CRUD/attachment_field.html.twig'
))

attachment_field.html.twig

{% extends '@SonataAdmin/CRUD/base_list_field.html.twig' %}

{% block field %}
    <a href="#">{{ object.attachmentViewTitle }}</a>
    <a href="#">{{ object.attachmentDownloadTitle }}</a> 
{% endblock %}
...