我尝试添加一个自定义约束,定义为defined in the official documentation,这是一个内置约束(例如Url)。
所以基本上,我已经在我的验证器类中添加了验证方法:
use Symfony\Component\Validator\Constraints\Url;
use Symfony\Component\Validator\Constraint;
public function validate($value, Constraint $constraint): void
{
[...]
$this->context
->getValidator()
->inContext($this->context)
->validate($value, new Url());
}
这在this article中似乎是可能的。
不幸的是,它不起作用。违规行为没有添加到约束的另一个。我别无选择,只能用不那么简洁的代码替换:
use Symfony\Component\Validator\Constraints\Url;
use Symfony\Component\Validator\Constraint;
public function validate($value, Constraint $constraint): void
{
[...]
$urlConstraint = new Url();
$violations = $this->context
->getValidator()
->validate($value, $urlConstraint);
if (count($violations) !== 0) {
$this->context
->buildViolation($urlConstraint->message)
->addViolation();
}
有没有可能将标准约束包含到自定义约束中(当然不需要将约束直接添加到Entity类中)?
2条答案
按热度按时间wljmcqd81#
在上面的例子中,我没有提到验证被放置在特定的验证组中。因此,标准约束没有被触发。需要将标准约束附加到默认组:
Constraint::DEFAULT_GROUP
等于'Default'。gdrx4gfi2#
我不能重现的问题(Symfony 6.2),所有的违规行为都添加.也许问题是别的东西.代码比较:
在这种情况下,将显示4个违规:电子邮件,“无效。”,URL,长度。