Почему ошибки из пользовательских проверочных ограничений не привязаны к конкретному полю к форме? - PullRequest
1 голос
/ 22 января 2012

У меня есть класс ArticelPattern, у которого есть свойство $ extraPatterns.Это свойство является массивом элементов ExtraPattern (class).

Существует пользовательское ограничение для класса ExtraPattern (которое я применяю с помощью аннотации).

Для обработки форм я создал класс ArticelPatternType сПоле коллекции extraPatterns.

Теперь, когда я проверяю эту форму и возникает нарушение ограничения одним из элементов коллекции ArticelPattern :: $ extraPatterns, ошибка не присваивается этому элементу, но вместо этогоко всей форме, поэтому я не могу отобразить эту ошибку рядом с соответствующим полем формы, которое вызвало эту ошибку.

Вместо того, чтобы наложить свое пользовательское ограничение на класс ExtraPattern, например:

/**
 * @AssertApl
 */
class ExtraPattern 

Я также пытался поместить его в свойство коллекции, например:

/**
 * @Assert\All(@AssertApl)
 */
private $extraPatterns;

Но с тем же результатом.Ошибки ограничения @AssertApl, вызванные элементами этой коллекции, присваиваются не им, а всей форме.

Есть идеи, как заставить это работать?

Ответы [ 2 ]

5 голосов
/ 22 января 2012

Ограничение вашего класса, вероятно, отображается в форму типа form, для которой error_bubbling включен по умолчанию. Установка этой опции на false должна сделать то, что вы ищете.

$builder ->add('extraPatterns', 'collection', array(
    // ...
    'options' => array('error_bubbling' => false),
));
1 голос
/ 01 апреля 2015

Принадлежит к аналогичной проблеме: используйте firstName в ваших сущностях и формы . Не first_name.

Если ваша сущность (Пользователь) имеет поле, подобное firstName, построитель форм принимает form_field (с подчеркиванием) наименование поля. Правильно сохраняет данные и так далее. Но если вы добавите какое-то пользовательское ограничение в это поле, будьте осторожны с подчеркиванием: не используйте его. Используйте camelCaseFieldNames insted, иначе вы получите ошибки, связанные с формой, а не с полем.

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