为 EasyAdmin 创建新的列表字段类型

Create new list field type for EasyAdmin

使用 EasyAdmin Symfony 包,使用 Symfony 4.2,如何创建新的列表字段类型?

用例

"I want to display a link to show page in the list table"

(不是表单类型,列表类型):

easy_admin:
  entities:
    offer:
      class: App\Entity\Offer
      list:
        fields:
          - { property: name, type: MY_TYPE??? }

我相信你有 2 个解决方案:

  1. 如果 url 存储在您的对象中,则有一个自定义类型: https://symfony.com/doc/2.x/bundles/EasyAdminBundle/book/list-search-show-configuration.html#url-data-type

它允许您显示 url :

# config/packages/easy_admin.yaml
easy_admin:
    entities:
        Product:
            class: App\Entity\User
            list:
                fields:
                    - { property: 'blogUrl', type: 'url' }
  1. 如果您没有完整的 url,您可以尝试使用自定义模板: https://symfony.com/doc/2.x/bundles/EasyAdminBundle/tutorials/custom-property-options.html#custom-property-options

通过这种方式,您可以定义一个自定义模板来生成您的 url 并在需要时传递一个参数:

# config/packages/easy_admin.yaml
easy_admin:
    entities:
        Product:
            class: App\Entity\Product
            list:
                fields:
                    # ...
                    - { property: 'tags', template: 'admin/tag_collection.html.twig',
                        label_colors: ['primary', 'success', 'info'] }