目前我有点卡住了:
我想为我的user对象创建一个特殊的验证,该验证仅在所有其他验证成功时才执行。这可以用@GroupSequence和验证器在包含我的“特殊”验证器的最后一个组之前的组中解决:
use FOS\UserBundle\Model\User as BaseUser;
...
/*
* @Assert\GroupSequence({"User", "Strict"})
* @UniqueEntity("email", message="xx", groups={"User"})
* @MyAssert\UserValidConstraint(groups={"Strict"})
*/
class User extends BaseUser {
....
}这样,当电子邮件不唯一时,我的UserValidConstraint就不会执行--这是预期的,这也是我想要得到的行为。
同时执行来自基类的约束。如果密码太短,我会从基类得到错误消息,等等。也可以正常工作。
但我的问题是,当基类的这些验证失败时,我的特殊约束也总是被执行。
GroupSequence-Rule似乎无法识别这些验证。
有什么暗示我可能做错了什么吗?或者这是Symfony的一个bug?
使用
来自git/dev-master的Symfony 4.1.4 FOS Userbundle
发布于 2018-10-26 03:04:49
这种行为有点奇怪:
为了评估这个问题,我编写了一些单元测试来了解验证器的行为。
在那里,我可以验证GroupSequence是否能正确处理继承的类。
有问题的约束是来自FOS-Userbundle的约束。这里的约束是用YAML定义的,而我的约束是用注释定义的。也许是有问题呢?
作为一种解决办法,我在user类中为电子邮件地址添加了另一个UniqueConstraint,并给出了一个空的错误消息。因此,用户不会对额外的错误感到太困惑。;-)
https://stackoverflow.com/questions/52669967
复制相似问题