【问题标题】:Sonata admin: list one to many in edit page奏鸣曲管理员:在编辑页面中列出一对多
【发布时间】:2017-06-26 14:45:50
【问题描述】:

我在 Sonata 中存在多对多关系(准确地说是两个一对多关系)、品牌和零售商。 在品牌管理编辑页面中,我想将所有零售商显示为一个列表(所以只是一个只读版本),而不是进行正常编辑(目前,在这个品牌编辑页面上,我可以管理这之间的关系品牌和零售商 - 添加一个新的,删除一个现有的)。

到目前为止,我尝试探索了两条路线:

  1. 编辑页面将加载自定义树枝
  2. 仅对该字段使用自定义字段类型

我的问题是,这两种选择我都没有找到解决方案 所以这就是我所做的:

1 - 加载自定义编辑树枝:

services:
  xx_brand.admin.brand_brand:
    calls:
        - [ setTemplate, [edit, xxBrandBundle:Admin:base_edit.html.twig]]

在这种情况下,base_edit 是奏鸣曲base_edit 的精确副本,但它会加载我的自定义base_edit_form

{% use 'xxBrandBundle:Admin:base_edit_form.html.twig' with form as parentForm %}

从这里我可以排除retailers 的默认渲染,但找不到一种方法来按照我的意愿渲染它,因为我不确定retailers 实体是如何在这里管理的:

{% if admin.formfielddescriptions[field_name] is defined and field_name != 'retailers' %}
  {{ form_row(form[field_name])}}
{% else %}
  <ul>
    <li>retailer1</li>
    <li>retailer2</li>
  </ul>
{% endif %}

2 - 对于自定义字段类型的方法,我尝试遵循documentation

  • 创建Bundle/Form/Type/ListType.php
  • 创建/BrandBundle/Resources/views/form/list.html.twig
  • configureFormFields 中使用ListType

    use XX\BrandBundle\Form\Type\ListType; ... ->add('retailers', 'ListType');

然后我得到一个错误XX\BrandBundle\Form\Type\ListType

所以基本上,因为我无法让它工作,这两个选项中的任何一个都可以很好地解决我的问题吗? 如果是这样,有人可以就我在那里缺少的东西提出建议吗? 任何帮助将不胜感激:)

【问题讨论】:

    标签: php symfony sonata-admin


    【解决方案1】:

    你可以使用sonata_type_model_list:https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/form_field_definition.html#example

    像这样:

    class BrandAdmin extends Admin
    {
        protected function configureFormFields(FormMapper $formMapper)
        {
            $formMapper
                ->add('retailer', 'sonata_type_model_list', array(
                'btn_add'       => false,
                'btn_delete'    => false,           
            ));
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-11
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2019-02-12
      • 2018-04-30
      • 2015-02-24
      相关资源
      最近更新 更多