2
我試圖管理的Thing
個列表,任何Thing
有name
和amount
:堅持獨立CollectionType(添加/刪除)
實體
class Thing
{
// ...
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $name;
/**
* @var integer
*
* @ORM\Column(type="integer")
*/
private $amount;
}
形式
class ThingFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('amount')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefaults(array(
'data_class' => Thing::class,
))
;
}
}
形式收集
class ThingsFormType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'entry_type' => ThingFormType::class,
'allow_delete' => true,
'allow_add' => true,
));
}
public function getParent()
{
return CollectionType::class;
}
}
測試
$things = array(
$this->getReference('thing1'), // My Fixtures
$this->getReference('thing2'), //
);
$form = $this->formFactory->create(ThingsFormType::class, $things);
$serializedForm = FormHelper::serializeForm($form);
unset($serializedForm[0]); // Removing
$serializedForm[1]['name'] = 'Stuff'; // Updating
$serializedForm[2] = array( // Adding
'name' => 'Chouette',
'amount' => 42,
);
$form->submit($serializedForm);
$this->assertTrue($form->isValid());
$this->em->flush();
正如你所看到的,我刪除Thing
0
,更新1
和添加新2
。
表單成功綁定,我可以看到我的新對象組合良好,但我在沖洗時只能看到UPDATE
和1
。
我該如何讓教條通知添加和刪除的?
如果可能,我寧願不必瀏覽整個集合以進行檢查。