默认设置 easyadmin_autocomplete Select Null。交响乐
Set easyadmin_autocomplete Select Null by default. Symfony
我想知道是否有任何方法可以将 null
值按 default 放入 easyadmin_autocomplete select.
列表中的第一项是 selected 并填充了来自数据库的数据,但默认情况下我需要一个 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 有一个 placeholder
和文本 'Any' (Ninguno)。我需要知道为什么处理它们不同。
这些是为 yml
:
的属性 字段 -> type_options 定义的选项
- 动作
- allow_extra_fields
- allow_file_upload
- 属性
- auto_initialize
- block_name
- by_reference
- class
- 化合物
- 约束
- csrf_field_name
- csrf_message
- csrf_protection
- csrf_token_id
- csrf_token_manager
- 数据
- data_class
- 已禁用
- empty_data
- error_bubbling
- error_mapping
- extra_fields_message
- 帮助
- help_attr
- inherit_data
- invalid_message
- invalid_message_参数
- 标签
- label_attr
- label_format
- 已映射
- 方法
- 多个
- post_max_size_message
- property_path
- 需要
- translation_domain
- trim
- upload_max_size_message
- validation_groups
无法为 easyadmin_autocomplete
设置类似值的占位符。
选择类型的正常方法是使用 placeholder
选项,如 symfony documentation 中所述。但是 easyadmin_autocomplete
不扩展该类型,它是一个独立的类型。您不能将选择类型或实体类型与占位符选项一起使用吗? easyadmin_autocomplete
类型的唯一需要是如果有很多实体,如果所有实体都加载到页面上,它会减慢应用程序。
我最好的选择是您可以扩展 easyadmin_autocomplete
。因为 easyadmin_autocomplete
使用 EntityType
你可以在扩展类型的 configureOptions
方法中添加占位符选项。这会将选项委托给 EntityType
但即便如此,它也不会显示在 html 中,因为 select2
javascript 也需要修改。
如果必须的话,我推荐扩展类型的方法,添加选项,并将自定义 javascript 添加到 easyadmin,它将处理新类型并添加占位符选项。您可以查看 select2 documentation 如何设置占位符。
但是,如果您可以为您的 select 使用实体或选择类型,那么它是首选解决方案。
如果设置默认值对您来说是一个解决方案(如零),服务侦听器可能是一个答案:
// 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.
}
我想知道是否有任何方法可以将 null
值按 default 放入 easyadmin_autocomplete select.
列表中的第一项是 selected 并填充了来自数据库的数据,但默认情况下我需要一个 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 有一个 placeholder
和文本 'Any' (Ninguno)。我需要知道为什么处理它们不同。
yml
:
- 动作
- allow_extra_fields
- allow_file_upload
- 属性
- auto_initialize
- block_name
- by_reference
- class
- 化合物
- 约束
- csrf_field_name
- csrf_message
- csrf_protection
- csrf_token_id
- csrf_token_manager
- 数据
- data_class
- 已禁用
- empty_data
- error_bubbling
- error_mapping
- extra_fields_message
- 帮助
- help_attr
- inherit_data
- invalid_message
- invalid_message_参数
- 标签
- label_attr
- label_format
- 已映射
- 方法
- 多个
- post_max_size_message
- property_path
- 需要
- translation_domain
- trim
- upload_max_size_message
- validation_groups
无法为 easyadmin_autocomplete
设置类似值的占位符。
选择类型的正常方法是使用 placeholder
选项,如 symfony documentation 中所述。但是 easyadmin_autocomplete
不扩展该类型,它是一个独立的类型。您不能将选择类型或实体类型与占位符选项一起使用吗? easyadmin_autocomplete
类型的唯一需要是如果有很多实体,如果所有实体都加载到页面上,它会减慢应用程序。
我最好的选择是您可以扩展 easyadmin_autocomplete
。因为 easyadmin_autocomplete
使用 EntityType
你可以在扩展类型的 configureOptions
方法中添加占位符选项。这会将选项委托给 EntityType
但即便如此,它也不会显示在 html 中,因为 select2
javascript 也需要修改。
如果必须的话,我推荐扩展类型的方法,添加选项,并将自定义 javascript 添加到 easyadmin,它将处理新类型并添加占位符选项。您可以查看 select2 documentation 如何设置占位符。
但是,如果您可以为您的 select 使用实体或选择类型,那么它是首选解决方案。
如果设置默认值对您来说是一个解决方案(如零),服务侦听器可能是一个答案:
// 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.
}