2

我想知道是否有任何方法可以将默认值null放在easyadmin_autocomplete select中。

列表中的第一项被选中并填充了数据库中的数据,但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' } }
 }

在此示例中,一个选择具有placeholder带有文本“Any”(Ninguno)的 a。我需要知道为什么处理它们不同。 form_pic 这些是为 attr字段 -> type_options定义的选项yml

  1. 行动
  2. 允许额外字段
  3. 允许文件上传
  4. 属性
  5. 自动初始化
  6. 块名
  7. 引用
  8. 班级
  9. 化合物
  10. 约束
  11. csrf_field_name
  12. csrf_message
  13. csrf_protection
  14. csrf_token_id
  15. csrf_token_manager
  16. 数据
  17. 数据类
  18. 禁用
  19. 空数据
  20. 错误冒泡
  21. 错误映射
  22. extra_fields_message
  23. 帮助
  24. 帮助属性
  25. 继承数据
  26. 无效消息
  27. 无效消息参数
  28. 标签
  29. 标签属性
  30. 标签格式
  31. 映射
  32. 方法
  33. post_max_size_message
  34. 属性路径
  35. 必需的
  36. 翻译域
  37. 修剪
  38. upload_max_size_message
  39. 验证组
4

2 回答 2

2

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

// 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.
        }
于 2019-09-09T08:44:29.920 回答
1

没有办法为easyadmin_autocomplete. 选择类型的正常方法是使用symfony 文档placeholder中描述的选项。但不扩展该类型,它是一个独立的类型。您不能将选择类型或实体类型与占位符选项一起使用。该类型的唯一需要是如果有很多实体,如果所有实体都加载到页面上,它会减慢应用程序的速度。easyadmin_autocompleteeasyadmin_autocomplete

我最好的选择是您可以扩展easyadmin_autocomplete. 因为easyadmin_autocomplete使用您可以在扩展类型EntityType的方法中添加占位符的选项。configureOptions这会将选项委托给,EntityType但即使如此,它也不会显示在 html 中,因为select2javascript 也需要修改。

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

但是,如果您可以为您的选择使用实体或选择类型,那么它是首选解决方案。

于 2019-07-01T09:35:04.970 回答