Задать вопрос

Как добавить violation для конкретного элемента CollectionType?

Есть форма в ней коллекция, мне нужно возле каждого элемента коллекции вывести ошибку, пытаюсь вот так добавить ошибки к элементам. Знаю что в этом коде сейчас ошибки добавятся к каждому элементу!
$builder->add('projectPings', CollectionType::class, array(
                'entry_type' => BillingPingType::class,
                'entry_options' => array('label' => false),
                'label' => false,
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false,
                'error_bubbling' => false,
                'constraints' => new Callback(array($this, 'validateProjectPings'))
            ))

    public function validateProjectPings($value, ExecutionContextInterface $context)
    {
        $form = $context->getRoot();
        $form_pings = $form->get('projectPings');
        $root_path = $form_pings->getPropertyPath()->getElement(0);

        foreach ($form_pings as $ping){
            $path = $ping->getPropertyPath()->getElement(0);
            $context->buildViolation('This field cannot be empty.')
                ->atPath($root_path)
                ->atPath(sprintf("[%s]", $path))
                ->atPath('limitTo')
                ->addViolation();
        }
    }

5d1b2de28eee8631170561.png

Но ошибка все равно добавляется в projectPings, вообще в cause путь ошибки вроде как правильно указан, может я просто незнаю как ее теперь вывести в шаблоне?
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

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