Php Symfony Sonata管理员-在listView中添加字段类型url无效
我试图在实体的列表视图中添加字段类型url,这是文档->中的链接 这是我的代码,我只是复制了文档:Php Symfony Sonata管理员-在listView中添加字段类型url无效,php,symfony,sonata-admin,symfony-3.4,symfony-sonata,Php,Symfony,Sonata Admin,Symfony 3.4,Symfony Sonata,我试图在实体的列表视图中添加字段类型url,这是文档->中的链接 这是我的代码,我只是复制了文档: protected function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('name') ->add('url', 'url', [ 'url' => 'http://example
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
->add('url', 'url', [
'url' => 'http://example.com'
]);
}
这似乎可行,但“Url”列始终为空
我找到了负责呈现此字段的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的字段。因此,您可以通过创建一个模板来实现这一点,该模板只包含一个带有您希望链接到的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 %}
{%extends'@SonataAdmin/CRUD/base_list_field.html.twig%}
{%块字段%}
{%endblock%}
现在,您应该看到按钮在列表视图中显示为一列
如果文档化的建议能够按预期的方式工作,那就太好了,这个解决方案是一种变通方法 是的,它不起作用,我检查了一些github讨论。你能做什么。创建您自己的自定义字段或将此url映射到对象(保存在db中)。请向我们显示您实体中的url字段。另一方面,您已经编写了->添加('url'),…而不是->addIdentifier('url'),..。@M.Galardi url字段不在我的实体中,我想在列表中添加一个外部url。我必须使用->添加而不是->addIdentifier,就像文档中解释的“不要使用url类型和addIdentifier()方法,因为它将创建无效的嵌套url。”@你有这些讨论的链接吗?也许它们对Stackoverflow这个问题也有参考价值。