Symfony 默认情况下,设置easyadmin\u自动完成选择Null。西蒙尼

Symfony 默认情况下,设置easyadmin\u自动完成选择Null。西蒙尼,symfony,symfony4,symfony2-easyadmin,easyadmin,Symfony,Symfony4,Symfony2 Easyadmin,Easyadmin,我想知道是否有任何方法可以在easyadmin_自动完成选择中默认设置null值 列表中的第一项是选中的,并用数据库中的数据填充,但默认情况下我需要一个null值,并自动设置。目标是第一个指向空结果点的结果点(选择一个…) 你知道怎么做吗 你能想出任何方法来组合下面定义的选项吗 #easy_admin.yml Product: class: App\Entity\Product controller: App\Controller\ProductController

我想知道是否有任何方法可以在easyadmin_自动完成选择中默认设置
null

列表中的第一项是选中的,并用数据库中的数据填充,但默认情况下我需要一个
null
值,并自动设置。目标是第一个指向空结果点的结果点(选择一个…)

你知道怎么做吗

你能想出任何方法来组合下面定义的选项吗

#easy_admin.yml
Product:
      class: App\Entity\Product
      controller: App\Controller\ProductController
      new:
        fields:
          - { property: 'category', label: 'Category', type: 'easyadmin_autocomplete', type_options: { class: 'App\Entity\Category' } }
 }

在本例中,一个select有一个带有文本“Any”(Ninguno)的
占位符。我需要知道为什么处理它们是不同的。
这些是为
yml
的attr字段->type_选项定义的选项:

  • 行动
  • 允许\u额外\u字段
  • 允许上传文件
  • 属性
  • 自动初始化
  • 块名称
  • 参照
  • 阶级
  • 复合物
  • 约束条件
  • csrf_字段_名称
  • csrf_信息
  • csrf_保护
  • csrf_令牌_id
  • csrf_令牌_管理器
  • 资料
  • 数据类
  • 残废
  • 空数据
  • 冒泡错误
  • 错误映射
  • 额外\u字段\u消息
  • 帮助
  • 帮助
  • 继承数据
  • 无效的\u消息
  • 无效的\u消息\u参数
  • 标签
  • 标签属性
  • 标签格式
  • 映射
  • 方法
  • 多重
  • post_max_size_消息
  • 属性路径
  • 必需的
  • 翻译域
  • 修剪
  • 上传\u最大\u大小\u消息
  • 验证组

  • 无法为
    easyadmin\u autocomplete
    设置类似占位符的值。 选择类型的正常方式是使用中所述的
    占位符
    选项。但是,
    easyadmin\u autocomplete
    并没有扩展该类型,它是一个独立的类型。不能将选项类型或实体类型与占位符选项一起使用。
    easyadmin\u autocomplete
    类型的唯一需要是如果有很多实体,并且如果所有实体都加载到页面上,则会减慢应用程序的速度

    我的最佳选择是,您可以扩展
    easyadmin\u autocomplete
    。由于
    easyadmin\u autocomplete
    使用
    EntityType
    可以在扩展类型的
    configureOptions
    方法中添加占位符选项。这将把选项委托给
    EntityType
    ,但即使如此,它也不会显示在html中,因为
    select2
    javascript也需要修改

    如果必须这样做,我推荐扩展类型的方法,添加该选项,并将自定义javascript添加到easyadmin,以处理新类型并添加占位符选项。您可以看到有关如何设置占位符的说明


    但是,如果您可以使用实体或选择类型进行选择,则它是首选解决方案。

    如果设置默认值将是您的解决方案(如零),则服务侦听器可能是一个答案:

    // You need to add this listener yourself:
    class ProductServiceListener
    {
        ...
    
        // you can manipulate entity in this level as you wish:
        public function preUpdate(LifeCycleEventArgs $args)
        {
    
           // You will focus to Product entity, so block others:
           if (!(get_class($entity) == 'App\Entity\Product')) {
               return;
            }
    
            // Set whatever default value you want if it's null:
            if($entity->getCategory() == null) {
               $entity->setCategory(0); // Zero, as an example.
            }