【发布时间】:2019-01-21 14:40:15
【问题描述】:
我正在开发一个带有 REST API 嵌入式类型的 Symfony 4 表单。形式:
class OffertaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('pulsanti_social_attivi', CheckboxType::class, [ ])
->add('immagini', CollectionType::class, [
'entry_type' => OffertaImmagineType::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'prototype' => 'immagini'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
[
'data_class' => Offerta::class,
'allow_extra_fields' => true,
'csrf_protection' => false,
]
);
}
}
该集合包含 2 个对象
[
{
"id": 1,
"url": "https://via.placeholder.com/150?text=1"
},
{
"id": 2,
"url": "https://via.placeholder.com/150?text=2"
}
]
所有“工作”,如果我发布一些数据,则创建一个新对象,如果我更新一个对象,则更新数据库。奇怪的是行的更新/删除似乎是基于集合中的对象位置而不是它的 ID。如果我删除第一个对象,结果应该是
[
{
"id": 2,
"url": "https://via.placeholder.com/150?text=2"
}
]
但它的
[
{
"id": 1,
"url": "https://via.placeholder.com/150?text=2"
}
]
Symfony 只看到 1 个对象,因此删除第二个并更新第一个“url”字段。
我怎样才能通过对象的 ID 而不是它们的位置来“索引”集合?
【问题讨论】:
标签: symfony symfony-forms