Symfony:选中复选框时验证字段
我想使用@Assert\NotBlank和@Assert\email验证电子邮件实体,仅当选中复选框($updateEmailCheckBox)时。 因为现在这些断言是在电子邮件字段的注释中定义的,并且当复选框未选中时也会进行验证 以下是我的用户enity的片段:Symfony:选中复选框时验证字段,symfony,Symfony,我想使用@Assert\NotBlank和@Assert\email验证电子邮件实体,仅当选中复选框($updateEmailCheckBox)时。 因为现在这些断言是在电子邮件字段的注释中定义的,并且当复选框未选中时也会进行验证 以下是我的用户enity的片段: /** * Update email checkbox entity */ private $updateEmailCheckBox; /** * @var string * @Assert\NotBlank(mess
/**
* Update email checkbox entity
*/
private $updateEmailCheckBox;
/**
* @var string
* @Assert\NotBlank(message="Email can't be empty")
* @Assert\Email(message="Wrong email pattern")
*/
private $email;
/**
* @Assert\Callback
*/
public function validate(ExecutionContextInterface $context)
{
/**
* If update email checkbox is checked
*/
if ($this->getUpdateEmailCheckBox() == 1)
{
// how to validate here an email field for Assert\NotBlank and Assert\Email ?
}
}
我可以使用callback检查复选框是否被选中,但我不知道如何启用NotBlank和电子邮件验证,并且在违反约束的情况下返回相应的错误。您可以使用
当您想在控制器或服务中验证您的用户时,可以重新验证该组(如果选中复选框)
默认值:
包含当前类和不属于其他组的所有引用类中的约束
如果您使用的是表单,那么您应该将表单配置为也使用验证组。大概是这样的:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if (/* checkbox is checked */) {
return array('Default', 'updateEmail');
}
return array('Default');
},
));
}
非常感谢。似乎我的方法是完全错误的:)
$errors = $validator->validate($user, null, array('Default', 'updateEmail'));
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if (/* checkbox is checked */) {
return array('Default', 'updateEmail');
}
return array('Default');
},
));
}