如何解决如何控制 Symfony 的 RepeatedType 验证序列
我使用 Symfony 的 RepeatedType 作为注册表单上的电子邮件地址。
$builder->add(
'email',RepeatedType::class,[
'invalid_message' => 'Confirm your email address',]
);
我还在属性声明本身添加约束:
/**
* @var string|null
*
* @Assert\NotBlank
* @Assert\Email(message="You must enter a valid email address")
*/
private ?string $email = null;
问题是 Symfony 在运行特定于属性的验证之前运行 RepeatedType 验证。
换句话说,如果您输入了错误的电子邮件地址,它会首先确保您输入了两次错误的电子邮件地址,然后才告诉您这是错误的。
顺便说一下,这同样适用于我的密码 - 它会在告诉您密码强度要求未满足之前断言您重新输入正确。
我知道我可以控制 sequence of validation groups 但由于 RepeatedType 不适用于模型本身,我不确定如何实现这一点。
解决方法
如果您想自定义此行为,您可以检查电子邮件地址是否与非映射属性的约束相同:
use Symfony\Component\Validator\Constraints\EqualTo;
$builder->add('email',EmailType::class)
->add('email_repeat',EmailType::class,[
'mapped' => false,'constraints' => [
new EqualTo([
'propertyPath' => 'email'
])
]
]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。