У меня есть форма symfony 4.2 через AJAX со встроенной подформой, которая используется в качестве пользовательской группы.
Проблема в том, что мой imgLinks
, который является частьювстроенная форма group_pictures
не возвращает свою ошибку как часть group_picture
bu как одиночную ошибку без какой-либо группы.
Поле проверяется, и ошибка возвращается, как и ожидалось, ИСКЛЮЧЕНИЕ не назначено дляправильная группа.
В профилировщике Symfony Form tab
я вижу ошибку, связанную с полем, но она не отображается как часть группы, как показано на скриншоте ниже
Это очень странное поведение, поскольку все остальные мои поля возвращают ошибки в соответствующих группах.
В профилировщике post parameter
мы видим, что оно отправлено с правильной группой:
Итак, вот поле сущности:
/**
* @var string|null
*
* @ORM\Column(name="img_links", type="simple_array")
*
* @AcmeAssert\ImageLinks
*/
private $imgLinks;
Изменение моего пользовательского Assert
для другого в комплекте с Symfony приводит кТакое же поведение, поэтому мое пользовательское ограничение не является причиной
Тип формы
$builder->add(
$builder->create('group_pictures', FormType::class, array('inherit_data' => true))
->add('imgLinks', CollectionType::class, array(
'label' => false,
'entry_type' => TextType::class,
'allow_add' => true,
'allow_delete' => true,
))
);
Функция моего контроллера для сбора ошибок и их возврата в мой AJAX
private function getErrorMessages($form)
{
$errors = array();
foreach ($form->getErrors() as $key => $error) {
$errors[] = $error->getMessage();
}
foreach ($form->all() as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = $this->getErrorMessages($child);
}
}
return $errors;
}
в приведенном выше сборщике ошибок, если я вставлю код для выгрузки дочернего элемента group picture
следующим образом:
if( $child->getName() == 'group_pictures'){
dump($child);
}
Я вижу, что ему не присвоено никакой ошибки -errors: []
Тогда ошибкивозвращается в браузер (скриншот консоли), так как вы видите, что ошибка назначается клавише 0
вместо group_picture