0

我对错误的出现方式有疑问。

以下是我的表单生成器的一部分

->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) }}

那么它如何可能将错误分配给字段而不是表单?

4

3 回答 3

1

尝试'error_bubbling' => false向 releaseDates添加选项

于 2013-06-19T12:50:04.563 回答
0

您可以创建自己的从 count 类扩展的验证器。然后在验证函数中使用以下函数(而不是 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'))
于 2013-06-20T06:32:25.063 回答
-1

Did you try:

{{ form_errors(form.releaseDates) }}
于 2013-06-19T12:26:09.057 回答