Symfony Sonata Admin-在listView中添加字段类型url不起作用

时间:2019-01-16 10:58:06

标签: php symfony sonata-admin symfony-3.4 symfony-sonata

我正在尝试在实体的列表视图中添加字段类型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 始终为空,我不知道此变量是什么;并且文档没有讨论任何名为value的字段。

1 个答案:

答案 0 :(得分:1)

因此,您可以通过创建一个模板来实现此目的,该模板仅包含带有您要链接的URL的按钮。见下文:

首先,我们在列表视图上定义一个引用模板的字段,类型为null:

->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 %}

,现在您应该在列表视图中看到按钮显示为一列。

如果记录的建议按预期工作,那将很好,此解决方案可以解决。