Я создаю форму, которая может содержать неопределенное количество наборов входов внутри, которые появляются после нажатия кнопки «Добавить».Я следил за этой документацией: https://symfony.com/doc/current/form/form_collections.html и все, кажется, работает нормально.Я могу добавлять, удалять, сохранять и редактировать основные формы и коллекции входов.Сейчас я пытаюсь проверить входные данные, но у меня возникают проблемы с проверкой сущностей CollectionType.Для ввода основной формы я использую проверку следующим образом:
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank
* @Assert\Type("string")
*/
private $name;
А для CollectionType моя проверка выглядит так:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Tag", cascade={"persist"})
* @Assert\All({
* @Assert\Collection(
* fields = {
* "name" = {
* @Assert\NotBlank
* @Assert\Type("string")
* )
* },
* "desc" = {
* @Assert\NotBlank
* @Assert\Type("string")
* )
* }
* },
* allowMissingFields = false,
* allowExtraFields = false
* )
* })
*
*/
private $tags;
Я получаю эту ошибку:
This value should be of type array|(Traversable&ArrayAccess).
Я не знаю, помогает ли это, но, выгрузив ошибку формы, я вижу это:
-propertyPath: "data.tags[0]"
-invalidValue: Tag {#850 ▼
-id: null
-name: null
-desc: null
}
Я также определил валидацию для переменных сущностей Tag, но она все еще не работает.
Если я удаляю часть «@Assert \ All», я получаю:
This field is missing.
ошибка для data.tags [name] и data.tags [desc].А также:
This field was not expected.
для data.tags [0]
РЕДАКТИРОВАТЬ: я закончил создание собственного валидатора в соответствии с https://symfony.com/doc/current/validation/custom_constraint.html