如何未命除,即当检查单选按钮R时,某种形式的字段命名为A E B?我希望通常为这些 A/B 字段配置验证器,但如果选中单选按钮 R(例如,将 A 和 B 设置为必需的字符串,但在 R 为即使它们是空的也要检查)。
我试图覆盖 doBind 函数,使用前/后验证器,但我继续收到“必需”消息
谢谢!
如何未命除,即当检查单选按钮R时,某种形式的字段命名为A E B?我希望通常为这些 A/B 字段配置验证器,但如果选中单选按钮 R(例如,将 A 和 B 设置为必需的字符串,但在 R 为即使它们是空的也要检查)。
我试图覆盖 doBind 函数,使用前/后验证器,但我继续收到“必需”消息
谢谢!
是正确的操作。我找到了几个答案,最好的办法是覆盖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);
}