Есть сущность конкурсы и есть сущность призы. В призах есть поля "место" и "название приза".
Сущности связаны связью один ко многим.
Сущность конкурсов
/**
* @ORM\OneToMany(targetEntity="Prize", mappedBy="contest", cascade={"persist"})
*
*/
protected $prizes;
Сущность призов
/**
* @ORM\ManyToOne(targetEntity="Contest", inversedBy="prizes")
* @ORM\JoinColumn(name="contest_id", referencedColumnName="id")
*/
protected $contest;
И есть форма, в которой для создания конкурса, в которой можно добавить любое количество призов, но поля "место" и "название приза" не должны быть пустыми.
В сущности призов добавлял аннотации
@Assert\NotBlank(), но это не помогло, при отправке формы не появляется сообщения о том что поле не может быть пустым, а появляется ошибка мол в БД нельзя сохранить name=NULL.
Потом нашел эту статью
symfony.com/doc/current/reference/constraints/Coll... и в сущности конкурса добавил такую вещь
/**
* @ORM\OneToMany(targetEntity="Prize", mappedBy="contest", cascade={"persist"})
* @Assert\Collection(
* fields = {
* "place" = @Assert\NotBlank(),
* "name" = @Assert\NotBlank(),
* },
* allowMissingFields = true
* )
*
*/
protected $prizes;
В этом случае, при любом раскладе(будут заполнены нужные поля или не будут), выводится сообщение "This field was not expected"("Это поле не ожидается").
Как правильно провалидировать нужные мне поля?