У меня есть объект symfony, который (необязательно) включает в себя файл «вложения». Я хотел бы представить две разные ссылки на вложение (одну для «загрузки», одну для «просмотра») в столбце Один представления списка сущностей списка. Пока у меня есть это:
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» и сам создать полное содержимое поля?




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