使用Symfony1,如何在表单中填写两个字段中的一个?它们是但不是必需的字段,但我需要用户填写两个字段之一。这是我到目前为止的尝试,但它不起作用:
$this->setValidator('phone', new sfValidatorAnd(
array(
new sfValidatorSchemaCompare('email', '==', ''),
new sfValidatorSchemaCompare('phone', '==', ''),
),
array(),
array(
'invalid' => 'El e-mail no tiene un formato correcto',
'required' => 'Campo obligatorio',
)
));
答案 0 :(得分:3)
比较两个单独的字段时,您应该使用全局验证器:http://www.symfony-project.org/forms/1_2/en/02-Form-Validation#chapter_02_global_validators。发生错误时,您当前的方法始终将电话字段标记为无效。此外,当值有效时,您提供给验证器的条件应该返回true,因此在您的情况下,您应该使用带有!=比较的ValidatorOr:
$this->validatorSchema->setPostValidator(new sfValidatorOr(
array(
new sfValidatorSchemaCompare('email', '!=', ''),
new sfValidatorSchemaCompare('phone', '!=', ''),
),
array(),
array('invalid' => 'Campo obligatorio')
));
希望有所帮助。
答案 1 :(得分:0)
我不确定是否有更好的方法,但你可以使用sfValidatorOr检查其中一个字段是否有效(即设置为true)。
有关sfValidatorOr的更多信息: http://www.symfony-project.org/forms/1_2/en/B-Validators#chapter_b_sub_sfvalidatoror