Я использую два объекта, имеющих отношение ManyToMany, Jobsite, имеющее свойство worker и наоборот. У меня есть форма JobsiteType, которая предлагает список рабочих для выбора или нет, она работает достаточно с несколькими выборами: select или unselect хорошо распространяются в db, но при использовании флажков это не работает: unselect item не удаляет его из отношение таблица. Я использую Symfony 2.8 V, вот несколько деталей:Элементы типа формы формы не удаляют непроверенные элементы
// Entity Jobsite
class Jobsite {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="UserWorker", inversedBy="jobsites", cascade={"all"})
* @ORM\JoinTable(name="jobsite_worker")
*/
protected $workers;
...
// Entity работник
class UserWorker {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Jobsite", mappedBy="workers", cascade={"all"})
*/
protected $jobsites;
...
// JobsiteType
public function buildForm(FormBuilderInterface $builder, array $options) {
...
$builder
->add('workers', EntityType::class, array(
'class' => 'MyBundle:UserWorker',
'choice_label' => 'name',
'choices_as_values' => true,
'by_reference' => false,
'multiple' => true,
'expanded' => true,// if false, multiple select is working almost well !
'label' => 'label.workers',
'required' => false,
'choices' => $workers,// list of possible workers
))
...
Так кто-нибудь знает, что не так с флажками стиль (несколько + расширенный)? Я знаю, что неконтролируемые входы ничего не посылают, значит, это означает, что я должен вручную зациклять рабочих в событии формы, чтобы применить правильные изменения? Хорошо также замечаю, что он не работает с несколькими блоками выбора, когда ни один элемент не выбран, вероятно, это связано с тем же эффектом «ничего не исправить, если пусто».