0

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;
    }
4

1 に答える 1