php EasyAdminBundle 3:带有实体的集合字段

eqfvzcg8  于 2023-01-16  发布在  PHP
关注(0)|答案(2)|浏览(106)

我有两门课:

class Product {
     /**
     * @ORM\OneToMany(targetEntity=Keyword::class, mappedBy="product")
     */
    private $keywords;
}

class Keyword {
     /**
     * @ORM\Column(type="string", length=255)
     */
    private $description;

    /**
     * @ORM\ManyToOne(targetEntity=Product::class, inversedBy="keywords")
     */
    private $product;
}

在我的产品CRUD控制器中,我定义了:

public function configureFields(string $pageName): iterable
{
     yield CollectionField::new('keywords');
}

它正确地显示了所有的关键字,但当我试图保存它时,我得到了一个错误:
参数类型应为"App\Entity\Keyword",但在属性路径"keywords"处给定了"string"。
有没有可能显示这样的连接作为一个集合?这将是更容易管理的关键字的方式。

lp0sw83n

lp0sw83n1#

您应该为Keyword实体创建CRUD控制器,并指定用于创建/编辑记录的字段。
之后,您可以使用产品CRUD控制器中的CollectionField,如下所示:

yield CollectionField::new('keywords')->useEntryCrudForm(KeywordsCrudController::class);
gblwokeq

gblwokeq2#

你需要使用

yield AssociationField::new('keywords');

代替

yield CollectionField::new('keywords');

相关问题