我在Symfony2中使用FOSUserBundle,我希望用户在家庭电话号码和手机号码之间输入至少一个电话号码,但我找不到在哪里添加支票至少一个田野填满。
任何线索? 感谢
答案 0 :(得分:2)
你可以让自己成为一个类约束。请看custom constraints上Symfony的食谱部分。在底部有一个关于类约束验证器的小部分。
你会有这样的约束:
class RegistrationPhones extends Constraint
{
public $message = '';
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
public function validatedBy()
{
return 'user_phones_validator';
}
}
然后您的验证器将如下所示:
class RegistrationPhonesValidator extends ConstraintValidator
{
public function validate($registration, Constraint $constraint)
{
$homePhone = $registration->getHomePhone();
$mobilePhone = $registration->getMobilePhone();
if (empty($homePhone) && empty($mobilePhone)) {
$this->context->addViolationAt('homePhone', $constraint->message, array(), null);
}
}
}
最后,您的validation.yml会有一个类似的条目:
User\MyBundle\Form\Model\Registration:
constraints:
- User\MyBundle\Validator\Constraints\RegistrationPhonesValidator:
message: phones.at_least_one_must_be_set
这应该可以解决问题。