如果兄弟(复选框)字段包含'false',则跳过验证

led*_*neb 5 symfony-forms symfony

我有一个包含复选框和"值字段"的表单.值字段可以是任何内容,文本框,复合字段,集合 - 任何东西.

表单可能如下所示,例如:

field_1_label    enabled    [x]
                 value      [________]

field_2_label    enabled    [x]
                 value      sub_field_1    [________]
                            sub_field_2    [________]

field_3_label    enabled    [x]
                 value      [________]
Run Code Online (Sandbox Code Playgroud)

当"启用"字段包含时true,一切正常.当"enabled"字段包含时false,我想禁用值字段及其子字段的验证.

因此,当取消选中"启用"时,我将有效地忽略该字段.我仍然会在表单中显示它,但我不会存储数据,我当然不希望它经过验证.

有没有人建议我怎么做?具体来说,我在验证系统忽略值字段任何潜在的子字段时遇到问题.

use*_*224 9

在Symfony 2.3中,您可以在validation_groups中使用false来不应用约束:

http://symfony.com/doc/current/book/forms.html#groups-based-on-the-submitted-data

例如,在包含复选框和值字段的字段上:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver
        ->setDefaults([
            'validation_groups' => function(FormInterface $form) {
                // If the form is disabled, don't use any constraints
                if ($form->get('enabled_checkbox')->getData() == false) {
                    return false;
                }

                // Otherwise, use the default validation group
                return 'Default';
            }
        ]);
}
Run Code Online (Sandbox Code Playgroud)