Php Symfony:约束中的验证集无效

Php Symfony:约束中的验证集无效,php,symfony,symfony4,Php,Symfony,Symfony4,当我检查更新到Symfony 2.x->Symfony 4.4的应用程序的操作时,我发现验证工作不正常。 即使设置了验证,即使输入了通过验证翻转的值,也不会翻转该值并将其保存。 由于Symfony更新,这些功能是否有任何变化 Html5EmailValidator.php if (!preg_match(self::PATTERN, $value, $matches)) { $this->context->buildViolation($con

当我检查更新到Symfony 2.x->Symfony 4.4的应用程序的操作时,我发现验证工作不正常。
即使设置了验证,即使输入了通过验证翻转的值,也不会翻转该值并将其保存。
由于Symfony更新,这些功能是否有任何变化

Html5EmailValidator.php

        if (!preg_match(self::PATTERN, $value, $matches)) {
            $this->context->buildViolation($constraint->message)
                          ->addViolation();
        }
使用Symfony\Component\Validator\Constraint;
使用Symfony\Component\Validator\ConstraintValidator;
类Html5EmailValidator扩展了ConstraintValidator
{
/**
*@见http://www.w3.org/TR/html5/forms.html#valid-电子邮件地址
*@见http://momdo.s35.xrea.com/web-html-test/spec/html5-dev/forms.html#valid-电子邮件地址
*/
常量模式='/^[a-zA-Z0-9.!$%&'*+\/=?^{124}-]+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])*/;
/**
*{@inheritardoc}
*/
公共函数验证($value,Constraint$Constraint)
{
如果($value==null | |$value===''){
返回;
}
如果(!preg_match(self::PATTERN,$value,$matches)){
$this->context->addinvalition($constraint->message);
}
}
}
Email.php

使用Symfony\Component\Validator\Constraint;
/**
*等同于HTML5类型=电子邮件检查的电子邮件地址约束
*/
类HTML5扩展了电子邮件约束
{
public$message='此值不是有效的电子邮件地址';
/**
*{@inheritardoc}
*/
公共函数validatedBy()
{
返回“HTML5电子邮件”;
}
}
服务.亚马尔

common.validator.html5电子邮件验证程序:
类:AppBundle\Validator\Constraints\Html5EmailValidator
标签:
-{name:validator.constraint_validator,别名:Html5Email}
Staff.php

使用条令\ORM\Mapping作为ORM;
使用Symfony\Component\Security\Core\User\AdvancedUserInterface;
使用AppBundle\Model\Lib\Parameters;
使用Symfony\Component\Security\Core\User\equalTableInterface;
使用Symfony\Component\Security\Core\User\UserInterface;
/**
*@ORM\Entity(repositoryClass=“AppBundle\Model\Repository\StaffRepository”)
*@ORM\Table(name=“staff”,uniqueConstraints)={
*@ORM\UniqueConstraint(name=“idx\u staff\u unique”,columns={“staff\u login\u id”}),
*@ORM\UniqueConstraint(name=“idx\u image\u mail\u unique”,columns={“image\u mail”})
* })
*@ORM\HasLifecycleCallbacks
*/
class Staff实现AdvancedUserInterface、\Serializable、EqualTableInterface
{
/**
* 
*@ORM\Column(name=“staff\u mail”,type=“string”,length=255,nullable=true,options={
*“注释”=“staffmailaddress”
* })
*/
受保护的$staffMail;
/**
*设置员工邮件
*
*@param string$staffMail
*@返回工作人员
*/
公共函数setStaffMail($staffMail)
{
$this->staffMail=$staffMail;
退还$this;
}
/**
*收到员工邮件
*
*@返回字符串
*/
公共函数getStaffMail()
{
返回$this->staffMail;
}
验证码

AppBundle\Model\Entity\Staff:
限制条件:
-AppBundle\Validator\Constraints\Staff:
组:[hqNew,hqEdit]
吸气剂:
员工邮件:
-长度:{max:200,组:[hqNew,hqInitialSetting,hqEdit]}
-AppBundle\Validator\Constraints\HTML5电子邮件:
组:[hqNew、hqInitialSetting、hqEdit]
尝试错误 Html5Email.php

/**
*@注释
*/
类HTML5扩展了电子邮件约束
{
public$message='此值不是有效的电子邮件地址';
/**
*{@inheritardoc}
*/
公共函数validatedBy()
{
返回“AppBundle\Validator\Constraints\Html5EmailValidator”;
}
}
Staff.php

使用AppBundle\Validator\Constraints\HTML5电子邮件作为HTML5电子邮件;
/*
*@HTML5电子邮件
*@ORM\Column(name=“staff\u mail”,type=“string”,length=255,nullabl e=true,选项={
*“注释”=“电子邮件地址”
* })
*/
受保护的$staffMail;

我可以通过更改为以下形式来解决此问题。 Html5EmailValidator.php

        if (!preg_match(self::PATTERN, $value, $matches)) {
            $this->context->buildViolation($constraint->message)
                          ->addViolation();
        }

您可以向我们展示如何在您的实体中使用它吗?不需要services.yaml声明。您需要的只是
使用App\Validator\Constraint作为MyConstraint;
和注释
*@MyConstraint\UserPassword()
在您的实体/字段中etc@DylanKas我添加了实体,所以请check@michal谢谢你的评论。当我搜索它时,它在validation.yaml中有描述。你能确认吗?是的@scottie320,默认情况下,它在symfony config中在yaml文件中有描述:但是在这个列表中还有一个选项卡可以切换到注释