Это работает, если я делаю это с двумя страницами/формами. Первый пытается выбрать существующего человека, в противном случае откройте новую страницу с другой формой.
Первая страница:
Код: Выделить всё
$form->add('person', AjaxEntityType, [ // EntityType but with select2 ajax
'class' => Person::class,
'remote_route' => 'person_ajax_list'
]);
Код: Выделить всё
$participant->setPerson(new Person());
$form->add('person', PersonType::class);
// adds PersonType fields to the Participant form
К сожалению, невозможно отобразить «person» дважды: один раз в виде раскрывающегося списка и один раз в виде формы PersonType. Так как же мне добиться того, чего я хочу, без нереального количества JavaScript?
Моим текущим решением было бы вручную создать все необходимые поля с помощью JavaScript и заполнить их данные о человеке, которые я получу с помощью другого запроса Ajax в событии onchange в раскрывающемся списке «человек», затем в событии PRE_SUBMIT формы удалите поле «человек» и добавьте его снова как поле PersonType, проверьте, соответствуют ли введенные данные существующему человеку или новому, а затем действовать соответственно. Должно быть лучшее решение, не так ли?
К сожалению, в противном случае события формы оказались в основном бессмысленными, поскольку невозможно присоединить прослушиватель событий к событию «изменение» на одно из полей.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/557 ... on-choices