Здравствуйте.
Есть коллекция объектов Skills (в нем есть и геттеры и сеттеры), которые формируются из YML файла.
Есть мой тип поля (SET) у сущности User :
/**
* @ORM\Column(type="skills", nullable=true)
* @var ArrayCollection
*/
private $skills;
Пробовал так :
//@UserType
->add('skills', 'collection', array(
'type' => 'choice',
'options' => array(
'choice_list' => new ObjectChoiceList(
$this->skillManager->getAllSkills()->toArray(),
'name',
array(),
null,
'alias'
),
'multiple' => true
)
));
Не записывает значения в поле skills в сущности, когда передаю массив (skills : ["skill_alias1", "skill_alias2"] ...). Просто пустая коллекция. Добавляю к полю "
collection" еще параметр
'allow_add' => true, тогда коллекция набивается пустыми значениями (хотя должна работать с объектами класса Skill).
Когда же меняю просто на choice:
//@UserType
->add('skills', 'choice', array(
'choice_list' => new ObjectChoiceList(
$this->skillManager->getAllSkills()->toArray(),
'name',
array(),
null,
'alias'
),
'multiple' => true
));
, вместо collection, то выдает ошибку:
Unable to transform value for property path "skills": Expected an array.---------------------------------
Совсем ум за разум зашел. ArrayCollection - это доктриновский класс, по этому компонент формы не умеет с ним работать, а работает со стандартным array() . Я так понимаю, мне теперь нужно просто свой DataTransformer для этого поля написать и все ?