对于具有多个属性的实体,我有一个表单显示其中一个属性,它是一个集合。
我在 EasyAdmin 上有这个表格,我可以在集合中添加和删除项目,问题是我无法删除所有项目,更改不会保存,或者即使只剩下一个项目,如果我删除它,它也不会保存。
我找到的解决方案
我在删除报价时遇到的错误是,当尝试删除数据库中未删除的所有产品/服务时,似乎当空 POST 的整个正文没有在数据库上执行任何内容时,因为如果您将报价与所有属性一起放在 Bike 表单中,如果您让它们被删除。
因此,我采取的解决方案是添加一个额外的字段作为隐藏字段,以便在没有任何折扣的情况下发送帖子时,它不会为空。
实体自行车:
class Bike{
// More properties
/**
* @ORMOneToMany(targetEntity="AppEntityBikeOffer", mappedBy="bike", orphanRemoval=true, cascade={"persist"})
*/
private $priceOffers;
public function __construct()
{
$this->priceOffers = new ArrayCollection();
}
// Adding, removing items and getter methods
}
实体报价:
class Offer{
// More properties
/**
* @ORMManyToOne(targetEntity="AppEntityBike", inversedBy="priceOffers")
*/
private $bike;
// getter and setter methods
}
EasyAdmin中的实体:
bike_offers:
class: AppEntityBike
role: ROLE_MANAGER
form:
fields:
- property: 'priceOffers'
type: 'collection'
css_class: 'offers-collection'
type_options:
entry_type: AppFormBikeOfferType
by_reference: false
label: false
您需要添加allow_delete
选项并设置为true
。
type_options:
allow_delete: true
https://symfonycasts.com/screencast/easyadminbundle/collection-type