Ситуация следующая:
Выводится обычная форма symfony и при изменении значения какого-либо поля, выполняется ajax запрос, по которому выбираются дополнительные поля к этой форме и передаются обратно в виде массива из html-кода элементов, которые уже выводятся средствами js.
Дополнительные поля я получаю в сервисе:
Как последовательно получить поля формы в symfony?
Теперь при получении данных в контроллере:
if ($form->isSubmitted()) {
$data = $form->getData();
...
получаю только те поля, которые были в форме изначально, а динамических полей нет, хотя в POST запросе они присутствуют.
Как добавить динамические поля к форме, чтоб она их увидела?
P.S. Сейчас, также, после отправки формы, выводится сообщение:
"Эта форма не должна содержать дополнительных полей."
Нашел кусок кода, где Форма проверяет только свои существующие элементы и отсекает все лишнее:// vendor\symfony\symfony\src\Symfony\Component\Form\Form.php
public function submit($submittedData, $clearMissing = true)
{
...
foreach ($this->children as $name => $child) {
$isSubmitted = array_key_exists($name, $submittedData);
if ($isSubmitted || $clearMissing) {
$child->submit($isSubmitted ? $submittedData[$name] : null, $clearMissing);
unset($submittedData[$name]);
if (null !== $this->clickedButton) {
continue;
}
if ($child instanceof ClickableInterface && $child->isClicked()) {
$this->clickedButton = $child;
continue;
}
if (method_exists($child, 'getClickedButton') && null !== $child->getClickedButton()) {
$this->clickedButton = $child->getClickedButton();
}
}
}
...
}
но легче не стало - чего-то даже в теории не могу понять, как получить или изменить или заменить исходную форму...
В ожидании решения (если оно существует), пока использую:
$data = $request->request->all();