Symfony表单框架:根据其他fileds值验证表单字段

时间:2012-05-18 20:59:43

标签: forms symfony1 symfony-1.4 validation

  

可能重复:
  Validate a field depending on another field value in Symfony

当检查单选按钮R时,如何取消设置,即一些名为A e B的表单字段? 我想通常为这些A / B字段配置验证器但是如果选中单选按钮R则跳过其验证器的检查(并取消设置它们的值)(例如,将A和B设置为需要的字符串,但是当R是检查即使它们是空的。)

我试图覆盖doBind函数,使用pre / post验证器,但我继续收到'required'消息

谢谢!

1 个答案:

答案 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);
}