Sonata Admin修改列表视图中的数据

时间:2017-11-25 19:33:39

标签: symfony sonata-admin form-fields

我正在尝试显示/编辑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_point_list.html.twig 我决定将文件放到合理的文件夹中。

模板的内容是:

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

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

使用模板的代码是:

->add('coords', null, ['template' => 'SonataAdmin/CRUD/geography_point_list.html.twig']);

出于某种原因,我无法获得:类型的路径?

1 个答案:

答案 0 :(得分:2)

对于列表视图字段,您可以按照here所述创建自定义模板。

示例:

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

此处的对象是具有所有值的实体。