Symfony Sonata Admin - добавление URL поля типа в listView не работает - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь добавить тип поля url в виде списка сущности, это ссылка в документации -> https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/field_types.html#url.

Это мой код, я просто скопировал документацию:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
            ->addIdentifier('name')
            ->add('url', 'url', [
                'url' => 'http://example.com'
            ]);
}

Кажется, это работает, но столбец "Url" всегда пуст.

enter image description here

Я нашел шаблон Sonata, который отвечает за рендеринг этого поля -> @ SonataAdmin / CRUD / list_url.html.twig. Вот код

{% extends get_admin_template('base_list_field', admin.code) %}

{% block field %}
{% spaceless %}
   {% if value is empty %}
      
   {% else %}
      {% if field_description.options.url is defined %}
   ...

Проблема в том, что значение всегда пусто, я не знаю, что это за переменная; и в документации нет ни одного поля с именем value.

1 Ответ

0 голосов
/ 16 января 2019

Таким образом, вы можете достичь этого, создав шаблон, который просто содержит кнопку с URL-адресом, на который вы хотите сослаться. Смотрите ниже:

Сначала мы определяем поле в представлении списка, которое ссылается на шаблон, тип равен нулю:

->add('foo', null, [
    'template' => 'example/foobar.html.twig',
])

Внутри нашего шаблона, на который мы только что ссылались, мы можем сделать следующее:

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

{% block field %}
    <a class="btn btn-success" href="http://google.co.uk/">My Link</a>
{% endblock %}

и теперь вы должны увидеть отображение кнопки в виде столбца в представлении списка.

Было бы неплохо, если бы задокументированное предложение работало как задумано, это решение - обходной путь

...