Symfony 5 / Easyadmin 3 - FormBuilder 添加的字段未显示适当的输入
Symfony 5 / Easy Admin 3 - FormBuilder added field not displaying appropiate input
我正在使用 Easy Admin FormBuilder
构建表单。我的目标是有一个 AssociationField
代表 OneToMany
关系,例如,将多个产品分配给商店。另外,我只想列出一些过滤后的产品,所以我覆盖了CrudController
中的createEditFormBuilder
方法,我参考了,这是覆盖函数的代码:
public function createEditFormBuilder(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormBuilderInterface
{
$formBuilder = parent::createEditFormBuilder($entityDto, $formOptions, $context);
$filteredProducts = $context->getEntity()->getInstance()->getFilteredProducts();
$formBuilder->add('products', EntityType::class, ['class' => 'App\Entity\Product', 'choices' => $filteredProducts, 'multiple' => true]);
return $formBuilder;
}
我希望关联字段与 configureFields()
函数中配置的字段相同,但是,显示的字段不允许文本搜索或自动完成功能,而且高度不正确。
预计:
实际:
我试图更改 $formBuilder->Add()
函数中的第二个参数,但是所有特定的 EasyAdmin 类型都抛出了错误。
更新:我还尝试使用 EasyAdmin 的 CrudFormType
而不是 EntityType
,它不支持 'choice' 参数。结果还是一样。
字段上有setQueryBuilder
,你可以用它来过滤像这样的实体
<?php
// ...
public function configureFields(string $pageName): iterable
{
// ...
yield new AssociationField::new('products')->setQueryBuilder(function($queryBuilder) {
$queryBuilder
->andWhere('entity.id IN (1,2,3)')
;
})
;
// ...
}
我正在使用 Easy Admin FormBuilder
构建表单。我的目标是有一个 AssociationField
代表 OneToMany
关系,例如,将多个产品分配给商店。另外,我只想列出一些过滤后的产品,所以我覆盖了CrudController
中的createEditFormBuilder
方法,我参考了
public function createEditFormBuilder(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormBuilderInterface
{
$formBuilder = parent::createEditFormBuilder($entityDto, $formOptions, $context);
$filteredProducts = $context->getEntity()->getInstance()->getFilteredProducts();
$formBuilder->add('products', EntityType::class, ['class' => 'App\Entity\Product', 'choices' => $filteredProducts, 'multiple' => true]);
return $formBuilder;
}
我希望关联字段与 configureFields()
函数中配置的字段相同,但是,显示的字段不允许文本搜索或自动完成功能,而且高度不正确。
预计:
实际:
我试图更改 $formBuilder->Add()
函数中的第二个参数,但是所有特定的 EasyAdmin 类型都抛出了错误。
更新:我还尝试使用 EasyAdmin 的 CrudFormType
而不是 EntityType
,它不支持 'choice' 参数。结果还是一样。
字段上有setQueryBuilder
,你可以用它来过滤像这样的实体
<?php
// ...
public function configureFields(string $pageName): iterable
{
// ...
yield new AssociationField::new('products')->setQueryBuilder(function($queryBuilder) {
$queryBuilder
->andWhere('entity.id IN (1,2,3)')
;
})
;
// ...
}