Symfony 5 - 现在工作的正则表达式验证器不起作用
Symfony 5 - Regex Validator which was working now doesn't work
所以我有一个带有@Assert/Regex
的实体
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Prénom"})
* @Assert\NotBlank (
* message="Le champs [prénom] ne peut être vide",
* groups={"registration"}
* )
* @Assert\Regex (
* pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
* message="Champs prénom : La saisie est invalide (min: 2, max: 30)")
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Nom"})
* @Assert\NotBlank (
* message="Le champs [nom] ne peut être vide",
* groups={"registration"}
* )
* @Assert\Regex (
* pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
* message="Champs nom : La saisie est invalide (min: 2, max: 30)")
*/
private $lastname;
我的控制器是这样的(我故意删除了大部分代码以使其易于使用)
public function register(ValidatorInterface $validator, EntityManagerInterface $emi): Response
{
$newUsers = new Users();
// Setting the values
$newUsers
->setFirstname($request->get('firstname'))
->setLastname($request->get('lastname'));
$errorsUsers = $validator->validate($newUsers, null, ['registration']);
foreach ($errorsUsers as $v){
$msgErrors .= "\n- " . $v->getMessage() . ".";
}
}
在一切正常之前。现在 Assert\NotBlank 仍在工作,但 Assert\Regex 不工作。就像,它甚至都没有比较它。
我试过了:
- php bin/console debug:validator 'App\Entity\Users' (一切似乎都很好)
- 作曲家转储自动加载(没有变化)
- 改为在我的正则表达式简单的部分,如“/\d/”(即使当我键入 'Toto' 它不会触发并且 return 违规)
我不知道为什么它不再工作了,这就是为什么我讨厌 symfony 因为它甚至不给出错误或消息开始。
如果有人遇到这个问题并且有解决方案,请告诉我。
提前致谢。
好的,问题是我没有把组也放在正则表达式中。
因此,对于您在 var 上添加的每个断言,您需要指定组。
我没想到,因为在文档中它说,如果您不指定组,则意味着它适用于所有内容。显然不是。
谢谢医生
所以我有一个带有@Assert/Regex
的实体/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Prénom"})
* @Assert\NotBlank (
* message="Le champs [prénom] ne peut être vide",
* groups={"registration"}
* )
* @Assert\Regex (
* pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
* message="Champs prénom : La saisie est invalide (min: 2, max: 30)")
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Nom"})
* @Assert\NotBlank (
* message="Le champs [nom] ne peut être vide",
* groups={"registration"}
* )
* @Assert\Regex (
* pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
* message="Champs nom : La saisie est invalide (min: 2, max: 30)")
*/
private $lastname;
我的控制器是这样的(我故意删除了大部分代码以使其易于使用)
public function register(ValidatorInterface $validator, EntityManagerInterface $emi): Response
{
$newUsers = new Users();
// Setting the values
$newUsers
->setFirstname($request->get('firstname'))
->setLastname($request->get('lastname'));
$errorsUsers = $validator->validate($newUsers, null, ['registration']);
foreach ($errorsUsers as $v){
$msgErrors .= "\n- " . $v->getMessage() . ".";
}
}
在一切正常之前。现在 Assert\NotBlank 仍在工作,但 Assert\Regex 不工作。就像,它甚至都没有比较它。
我试过了:
- php bin/console debug:validator 'App\Entity\Users' (一切似乎都很好)
- 作曲家转储自动加载(没有变化)
- 改为在我的正则表达式简单的部分,如“/\d/”(即使当我键入 'Toto' 它不会触发并且 return 违规)
我不知道为什么它不再工作了,这就是为什么我讨厌 symfony 因为它甚至不给出错误或消息开始。
如果有人遇到这个问题并且有解决方案,请告诉我。
提前致谢。
好的,问题是我没有把组也放在正则表达式中。
因此,对于您在 var 上添加的每个断言,您需要指定组。
我没想到,因为在文档中它说,如果您不指定组,则意味着它适用于所有内容。显然不是。
谢谢医生