Symfony2: Как валидировать коллекцию форм?

Есть сущность конкурсы и есть сущность призы. В призах есть поля "место" и "название приза".
Сущности связаны связью один ко многим.
Сущность конкурсов
/**
     * @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"("Это поле не ожидается").
Как правильно провалидировать нужные мне поля?
  • Вопрос задан
  • 2726 просмотров
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Пригласить эксперта
Ответы на вопрос 1
benbor
@benbor
Помог ответ - не забудь лайкнуть
Если вы используете FormType то посмотрите в эту сторону stackoverflow.com/questions/10138505/symfony2-vali...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы