Symfony - EasyAdmin - 从 AssociationField 中忽略添加和删除功能

Posted

技术标签:

【中文标题】Symfony - EasyAdmin - 从 AssociationField 中忽略添加和删除功能【英文标题】:Symfony - EasyAdmin - Add and remove functions are ignored from AssociationField 【发布时间】:2021-05-05 17:00:27 【问题描述】:

我使用的是最新版本的 EasyAdmin,我的 addremove 函数在我提交表单时被忽略:

Ambiance实体:

/**
 * @ORM\OneToMany(targetEntity="Vehicule", mappedBy="ambiance")
 */
protected Collection $vehicules;

public function __construct()

    $this->vehicules = new ArrayCollection();


public function addVehicule(Vehicule $vehicule): self

    if (!$this->vehicules->contains($vehicule)) 
        $this->vehicules[] = $vehicule;
        $vehicule->setAmbiance($this);
    

    return $this;


public function removeVehicule(Vehicule $vehicule): void

    if (!$this->vehicules->contains($vehicule)) 
        return;
    

    $this->vehicules->removeElement($vehicule);


public function getVehicules()

    return $this->vehicules;


public function setVehicules($vehicules): void

    $this->vehicules = $vehicules;

然而我的教义映射是有效的..

AmbianceCrudController.php 中的我的 EasyAdmin 表单:

'vehicules' => AssociationField::new('vehicules', 'Véhicules'),

它会生成一个multiple select2,但是当我添加车辆并提交表单时,没有插入任何数据。

【问题讨论】:

我也有同样的问题。 【参考方案1】:

我正在努力解决同样的问题,但我已经发现了一些可能有用的难题:

根据我的经验,关联的拥有方(在数据库中具有外键的一方)似乎会生成一个保留更改的编辑表单。 对方完全无视变化 setter 和 getter 以及 addABC 和 removeABC 方法似乎确实被跳过了,原因我也不清楚。

我希望你能找到一个解决方案,暗示关系中的 crudcontroller 对方,我认为你的情况是车辆。

【讨论】:

以上是关于Symfony - EasyAdmin - 从 AssociationField 中忽略添加和删除功能的主要内容,如果未能解决你的问题,请参考以下文章

在 Symfony 5 中使用 composer 安装 EasyAdmin 的问题

Symfony 5 / Easyadmin 3 - FormBuilder 添加的字段未显示适当的输入

Symfony 5 easyadmin 3 与 ManyToOne 关系的实体 - 不保存在“多”端

Symfony 5. EasyAdmin 3. VichUploader。同时上传多个文件

EasyAdmin 3.1 CrudControllers Symfony

如何在 Symfony EasyAdmin 3 中创建密码输入类型