Symfony Sonata管理员在列表视图中修改数据

Symfony Sonata管理员在列表视图中修改数据,symfony,sonata-admin,form-fields,Symfony,Sonata Admin,Form Fields,我正在尝试显示/编辑postgis点类型。我使用的是creof/doctrine2 spatial包,它提供了一些简洁的函数来获取点的X和Y值。以下在“编辑/新建”形式下工作正常,因此该点列为“Y X”(在本例中为“经纬度”) 我不确定这是否是实现我所需要的正确方法,但它是有效的 protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('name', 'te

我正在尝试显示/编辑postgis点类型。我使用的是
creof/doctrine2 spatial
包,它提供了一些简洁的函数来获取点的X和Y值。以下在“编辑/新建”形式下工作正常,因此该点列为“Y X”(在本例中为“经纬度”)

我不确定这是否是实现我所需要的正确方法,但它是有效的

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name', 'text')
        ->add('coords', 'text', array(
            'data'=>
                $this->getSubject()->getCoords()->getLatitude() . ' ' .
                $this->getSubject()->getCoords()->getLongitude()
        ));
}
然而,问题在于列表视图。因为点被转换为字符串作为
“X Y”
,所以它在列表视图中以错误的顺序打印纬度和经度。它打印为“经纬度”,我对索纳塔非常陌生,所以我不确定如何在列表视图中解决这个问题

有什么想法吗

更新:由于@kunicmarko20,我已经解决了这个问题:

因此,文件转到
app/Resources/views/SonataAdmin/CRUD/geography\u point\u list.html.twig
我决定把文件放在一个合理的文件夹里

模板的内容包括:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    <div>
        {{ object.coords.getLatitude }} {{ object.coords.getLongitude }}
    </div>
{% endblock %}

由于某些原因,我无法获取
类型路径以工作?

对于列表视图字段,您可以按照说明创建自定义模板

例如:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('yourfiled', null, ['template' => 'AppBundle:Admin:your_field_list.html.twig'])
    ;
}
您的模板将如下所示:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    <div>
        {{ object.longitude }} {{ object.latitude }}
    </div>
{% endblock %}
{%extends'SonataAdminBundle:CRUD:base\u list\u field.html.twig%}
{%块字段%}
{{object.longitude}{{object.latitude}}
{%endblock%}

这里的对象是包含所有值的实体。

我有两个问题1-放置自定义模板文件的最佳位置是什么,相关文档在哪里?2-如何从模板中调用getLatitude()getLatitude()函数?@EvrenYurtesen我用示例更新了我的答案,基本上我有一个文件夹管理器,我将模板连接到sonataI,并将您的答案标记为正确。但是,我无法使用
路径找到模板。这里说使用冒号是旧方法。然而,我认为我没有定义@App,这也不起作用。请参阅:@EvrenYurtesen
@App
语法只有在您使用Symfony Flex时才有效,
语法仍然有效,如果您有类似于
AppBundle:Admin:your_field_list.html.twig的东西,那么您必须将该模板放入
src/AppBundle/Resources/views/Admin/your_field_list.html.twig
我都试过了。在您提到的位置,仅当模板路径为
AppBundle::SonataAdmin/CRUD/geography\u point\u list.html.twig时,它才起作用
。这超出了问题的范围,因此我提出了一个新问题:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    <div>
        {{ object.longitude }} {{ object.latitude }}
    </div>
{% endblock %}