2013-06-19 2 views
0

У меня проблема с тем, как появляются ошибки.symfony2 форма проверки: form.errors VS form.fieldname.errors

ниже является частью моего вида строителя

->add('editions', 'entity', array(
    'multiple' => true, 
    'expanded' => true, 
    'class' => 'MyBundle:Edition', 
    'property' => 'name', 
    'constraints' => new Count(array('min' => 1, 'minMessage' => 'Choose at least one edition')), 
    ) 
) 
->add('releaseDates', 'collection', array(
    'type' => new ReleaseDateFormType(), 
    'allow_add' => true, 
    'allow_delete' => true, 
    'by_reference' => false, 
    'constraints' => new Count(array('min' => 1, 'minMessage' => 'Choose at least one release date')), 
    ) 
) 

Валидация работает, но проблема в том, что для первого поля «издание» ошибка «привязанная» к полю самому, т.е.

{{ form_errors(form.editions) }} 

и для второй ошибки поля прикреплен к форме, но не к полю

{{ form_errors(form) }} 

, так как его возможно назначить ошибку полю, а не форме?

ответ

1

Попробуйте добавить опцию 'error_bubbling' => false в releaseDates

-1

ли вы попробовать:

{{ form_errors(form.releaseDates) }} 
0

Вы можете создать свой собственный валидатор, который простирается от класса графа. Затем вы используете следующую функцию в вашей валидации функции (вместо addViolation)

$context->addViolationAt('fieldname', 'message', array(), null); 

In Symfony 2.1: 
$context->addViolationAtSubPath('fieldname', 'message', array(), null); 

Вы могли бы сделать имя_поль paramerter для повторного использования:

'constraints' => new Count(array('fieldname' => $fieldname, 'min' => 1, 'minMessage' => 'Choose at least one edition')) 
+0

, как я сказал, проверка работает, его ошибка только настройки сообщение в форме, но в поле, установка «error_bubbling» => false помогает, спасибо Майклу Сиволобову – user1112057

Смежные вопросы