如何在symfony 2.3中动态验证表单字段

时间:2017-01-18 15:44:42

标签: validation symfony

我需要验证输入字段,具体取决于我传递给buildForm()的选项 我有这个代码我用谷歌搜索粘在一起。 但是在控制器中

$form->isValid()

传递的值超出范围:

$builder->add('limit', 'integer', array(
    'constraints' => [
        new Assert\Range(array(
            'min' => $options['min'],
            'max' => $options['max'],
            'minMessage' => 'min error message',
            'maxMessage' => 'max error message',
        ))
    ],
));

如何动态验证输入?

更新

Symfony2 validation using Assert annotation does not work同样的问题。将不得不编写自定义验证器。

1 个答案:

答案 0 :(得分:0)

你可以做一些基本的事情:

if ($option['condition'] === 'whatever') {
    $limtiConstraint = new Assert\Range(array(
        'min'        => $options['min'],
        'max'        => $options['max'],
        'minMessage' => 'min error message',
        'maxMessage' => 'max error message',
    ));
} else {
    // $limtiConstraint = 'other constraint with other options'
}

$builder->add('limit', 'integer', array(
    'constraints' => [$limtiConstraint]
));

或者,如果要修改限制,可以使用三元运算符:

'min' => $options['condition'] ? $options['min'] : $options['other_min'],