可能重复:
Validate a field depending on another field value in Symfony
当检查单选按钮R时,如何取消设置,即一些名为A e B的表单字段? 我想通常为这些A / B字段配置验证器但是如果选中单选按钮R则跳过其验证器的检查(并取消设置它们的值)(例如,将A和B设置为需要的字符串,但是当R是检查即使它们是空的。)
我试图覆盖doBind函数,使用pre / post验证器,但我继续收到'required'消息
谢谢!
答案 0 :(得分:3)
这是一个正确的操作。我发现了couple answers,最好的地方是覆盖bind
函数并根据表单中的值重新定义验证程序的选项(禁用必需选项或删除验证程序) ):
public function bind(array $taintedValues = null, array $taintedFiles = null)
{
if($taintedValues["method"] == 'phone')
{
// disabled required
$this->validatorSchema["email"]->setOption('required', false);
}
else
{
// remove the validator
$this->validatorSchema['other_field'] = new sfValidatorPass();
// and disabled required
$this->validatorSchema["phone"]->setOption('required', false);
}
return parent::bind($taintedValues, $taintedFiles);
}