Symfony 4: получить сообщение об ошибке из ограничения на количество, примененного к типу коллекции - PullRequest
0 голосов
/ 08 ноября 2019

Я использую тип коллекции Symfony 4 и хочу применить ограничение на количество к этой коллекции.

Я следовал этому руководству: https://symfony.com/doc/current/form/form_collections.html

Моя идея - применить ограничение непосредственно к коллекции:

$builder
    ->add('tags', CollectionType::class, [
        'entry_type' => Tag::class,
        'entry_options' => ['label' => false],
        'allow_add' => true,
        'by_reference' => false,
        'constraints' => [
            new Assert\Count(['min' => 1, 'max' => 3])
        ]
    ])
;

Но это не работает: я делаюне появляется сообщение об ошибке ...

Я также пытался использовать это ограничение непосредственно в сущности Task, но безуспешно.

Так как я могу получить сообщение об ошибке из ограничения количестваприменяется по типу коллекции?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Как сказал @emix в комментарии

С NotNull вы сообщаете валидатору, что поле не может быть пустым. Используя валидатор Count, вы ограничиваете размер коллекции (используя min / max или оба)

И для вывода ошибки я установил для параметра error_bubbling значение false из CollectionType.

0 голосов
/ 08 ноября 2019

Если вы используете аннотации доктрины, я думаю, что вы можете действовать следующим образом:

Не передавайте ограничение в построителе форм. Я бы добавил ограничение в сущности, в которой вы сохранили теги.

Что-то вроде этого

/**
 * @Assert\Count(
 *      min = 1,
 *      max = 5,
 *      minMessage = "You must specify at least one Tag",
 *      maxMessage = "You cannot specify more than 5 tags"
 * )
 */
 protected $tags;

Если это не сохраняется в какой-либо сущности, возможно, вы захотите обработать утверждениесамостоятельно в контроллере, имеющем дело с действием формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...