При использовании объекта в коллекции объект устанавливается в свойстве, которое я вызываю.
Это имеет смысл, ProductType говорит: «Эй, вы хотите изменить заголовок? Конечно, вот список тех объектов, которые вы хотели» — и при отправке он устанавливает объект в качестве заголовка. Так что это не похоже на правильный способ добиться того, чего я хочу (назначить n количество продуктов пользователю), но это рекомендуемый способ:
http://symfony.com/doc/current/cookbook/form/form_collections.html
Итак, у меня есть пользователь с однонаправленным отношением ManyToMany к продукту:
/**
* @ORM\ManyToMany(targetEntity="Product")
*/
protected $products;
Форма пользователя имеет коллекцию, каждая из которых представляет собой тип поля сущности — тип формы пользователя:
...
->add('products', 'collection', array('type'=>new ProductType()))
и в ProductType у меня есть:
$builder->add('title', 'entity', array(
'class' => 'ThingsStuffBundle:product',
'property' => 'title',
'required' => false,
'empty_value' => 'product',
'query_builder' => function(EntityRepository $er) {
return $er
->createQueryBuilder('p')
->orderBy('p.title', 'ASC');
},
));
Который работает. Вроде, как бы, что-то вроде. Когда я отправляю форму, кажется, что я обновляю название продукта, а не использую его как просто массив выбора.
Представленные данные:
$userEntity->products[
productEntity{
id = 1,
title = productEntity{
id = 1,
title = 'balls'
}
},
productEntity{
id = 2,
title = productEntity{
id = 2,
title = 'suck'
}
}
]