В двух словах:
Когда я использую 'sonata_type_collection' в отношении OneToMany, я должен указать другую сторону отношения, которая в «действии создания» все еще не существует и в «действии обновления» может быть установлено, но также можно указать полностью другой родитель.
Более подробное объяснение:
Я использую Sonata Admin Bundle для операций CRUD и могу сказать, что у меня есть только сущности Post (id, title, content) и Tag (id, post_id, title). Я хотел бы иметь возможность добавлять и удалять объекты тегов во время редактирования объекта Post, поэтому я использую поле sonata_type_collection.
Это метод configureFormFields из класса PostAdmin:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('tags', 'sonata_type_collection', array(), array(
'edit' => 'inline',
'inline' => 'table'
))
))
;
}
Проблема в том, что в форме создания, когда я добавляю новый тег, мне нужно указать как сообщение, так и заголовок, но сообщение все еще не существует, поэтому я не могу добавлять теги. Пока я редактирую сообщение, я могу добавлять новые теги, но для каждого из них я должен явно установить сообщение, и я могу, например, добавить тег для совершенно другого сообщения.
Подскажите, как решить эту проблему?