我正在尝试使用 EasyAdmin Bundle 在表单中设置选项。下面是控制器内部的代码。
我收到此错误消息:Expected argument of type "App\Entity\Author or null", "int" given at property path "author".
实际上,ChoiceField 返回作者对象的 id。提交表单后,如何以时尚的方式将 id 转换为对象? 我目前正在为每个字段使用 DataTransformers 来解决这个问题。但这作为解决方案非常沉重。这意味着为每个字段创建 1 个 DataTransform 类。
该文档没有提供有关如何处理选择的任何线索:https ://symfony.com/doc/3.x/EasyAdminBundle/fields.html
谢谢你。
我在 Linux Mint 上使用 EasyAdmin 3 + Symfony 5。
在 App\Admin\PostCrudController 中:
public function configureFields(string $pageName): iterable
{
return [
// ...
ChoiceField::new('author')->setChoices(fn() => $this->getAuthorChoices()),
];
}
private function getAuthorChoices(): array
{
$choices = [];
foreach($this->authorRepository->findAll() as $i => $author) {
$choices[$author->getFullName()] = $author->getId();
}
return $choices;
}