Когда поля коллекции Symfony динамически добавляются / удаляются в DOM с помощью javascript, при сохранении этой коллекции либо элементы проверки, либо сохраненные элементы коллекции портятся. Например, если у меня есть выпуск Entity \ User.php, например:
/**
* @var \TestBundle\Entity\UserFollowers
*
* @ORM\OneToMany(targetEntity="TestBundle\Entity\UserFollowers", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
* @Assert\Valid()
*/
protected $user_followers;
и обратное отношение Entity \ UserFollower.php, например:
/**
* @ORM\ManyToOne(targetEntity="TestBundle\Entity\User", inversedBy="user_followers")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @var string
* @ORM\Column(name="name", type="string")
* @Assert\NotBlank()
*/
private $name;
И UserFormType вроде:
$builder->add('user_followers', CollectionType::class, array(
'entry_type' => UserFollowersType::class,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'prototype_name' => '__name__',
'by_reference' => false,
'label' => 'User followers'
))
и UserFollowersFormType, например:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name', TextType::class, array(
'attr'=> [
'class' =>'input input-group-field'
],
'label' => false
));
}
когда форма обрабатывается и пользователь сохраняется в db, либо проверка формы присоединяется к неправильному элементу коллекции, либо постоянный id в db ошибается, различные манипуляции с DOM приводят к другой ошибке, контроллер выглядит так:
$form->handleRequest($request);
if ($form->isValid()) {
$em->persist($user);
$em->flush();
}
Почему это происходит? его как индексы коллекции форм запутались ....