【问题标题】:Sonata Admin modify data in list viewSonata 管理员在列表视图中修改数据
【发布时间】:2017-11-25 19:33:39
【问题描述】:

我正在尝试显示/编辑 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']);

由于某种原因,我无法让 : 类型路径工作?

【问题讨论】:

    标签: symfony sonata-admin form-fields


    【解决方案1】:

    对于您的列表视图字段,您可以按照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 %}
    

    这里的对象是你的具有所有值的实体。

    【讨论】:

    • 我有 2 个问题 1- 放置自定义模板文件的最佳位置是什么?关于此的文档在哪里? 2- 如何从模板中调用 getLatitude() getLongitude() 函数?
    • @EvrenYurtesen 我用示例更新了我的答案,基本上我有一个文件夹 Admin 我将模板连接到奏鸣曲
    • 我已将您的答案标记为正确。但是我无法使用: 路径找到模板。这里它说使用冒号是旧方法。但是我认为我没有定义@App,这也不起作用。见:symfony.com/doc/current/templating/namespaced_paths.html
    • @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_point_list.html.twig 时才有效。这超出了这个问题的范围,所以我提出了一个新问题:stackoverflow.com/questions/47497251/…
    猜你喜欢
    • 2018-01-31
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2015-02-09
    • 2016-06-30
    • 2016-07-25
    相关资源
    最近更新 更多