EasyAdmin Bundle を使用してフォームに選択肢を設定しようとしています。以下は、コントローラー内のコードです。
次のエラー メッセージが表示されます。Expected argument of type "App\Entity\Author or null", "int" given at property path "author".
実際、ChoiceField は Author オブジェクトの 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;
}