我对错误的出现方式存在疑问。
下面的是我的表单构建器
的一部分->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) }}
那么如何将错误分配给字段而不是表单?
答案 0 :(得分:1)
尝试向releaseDates
添加选项'error_bubbling' => false
答案 1 :(得分:0)
您可以创建自己的验证程序,该验证程序从计数类扩展而来。然后在验证函数中使用以下函数(而不是addViolation)
$context->addViolationAt('fieldname', 'message', array(), null);
In Symfony 2.1:
$context->addViolationAtSubPath('fieldname', 'message', array(), null);
您可以将字段名称作为重用的参数:
'constraints' => new Count(array('fieldname' => $fieldname, 'min' => 1, 'minMessage' => 'Choose at least one edition'))
答案 2 :(得分:-1)
你有没有尝试过:
{{ form_errors(form.releaseDates) }}