我需要验证输入字段,具体取决于我传递给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同样的问题。将不得不编写自定义验证器。
答案 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'],