Symfony2复合形式,与字段关联错误

时间:2013-11-27 16:30:09

标签: php forms symfony

我有一个嵌入的表单,其中compound和inherit_data选项设置为true。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->setErrorBubbling(false);

    $builder->add('date_start', 'date', array(
        'label'             => 'form.date_start.label',
        'widget'            => 'single_text',
        'required'          => false,
        'group'             => ['event', 'dates']
    ));

    $builder->add('date_end', 'date', array(
        'label'             => 'form.date_end.label',
        'widget'            => 'single_text',
        'required'          => false,
        'group'             => ['event', 'dates']
    ));

    $builder->add('time_zone', 'alternate_timezone', [
        'label'             => 'form.timezone.label',
        'field_help'        => 'form.timezone.help',
        'empty_value'       => 'form.timezone.empty_value',
        'required'          => false,
        'group'             => ['event', 'dates']
    ]);
}

/**
 * {@inheritdoc}
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults([
        'label'        => false,
        'compound'     => true,
        'inherit_data' => true
    ]);
}

我无法将错误与我的字段相关联。此表单的错误显示在父表单上,而不是字段上。我在doc中看到,除非表单是复合的,否则error_bubbling可能是false。

复合形式的解决方案是什么,与该字段有关的错误?

谢谢

1 个答案:

答案 0 :(得分:-1)

使用Symfony中的复合表单 - 您可以为复合关系中的每个实体定义验证约束,并且验证期间生成的任何错误都将显示在发生错误的表单元素的上方/附近。

例如 - 如果您发布的表单示例绑定到“ExampleEntity”实体 - 您可以在bundle的validation.yml中为该实体定义验证约束。任何验证错误都将显示在各自的子表单旁边 - 即使在多个子表单上可能出现验证错误的集合中也是如此。

示例src / MyBundle / Resources / Config / validation.yml

App\MyBundle\Entity\ExampleEntity:
        properties:
            date_start:
                - NotBlank:
                    message:  Date start cannot be blank.
            date_end:
                - NotBlank:
                    message:  Date end field cannot be blank.
            time_zone:
                - NotBlank:
                    message:  Timezone cannot be blank.