regex - Symfony 5 - 现在工作的正则表达式验证器不起作用
问题描述
所以我有一个带有@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”时它也不会触发并返回违规)
我不知道为什么它不再工作了,这就是为什么我讨厌 symfony 的原因,因为它甚至没有给出错误或消息。
如果有人遇到此问题并有解决方案,请告诉我。
提前致谢。
解决方案
好的,问题是我也没有将组放在正则表达式中。
因此,对于您在 var 上添加的每个 Assert,您需要指定组。
我没有想到,因为在文档中它说如果您不指定组,则意味着它适用于所有内容。显然不是。
谢谢医生。
推荐阅读
- firebase - 如何减少一次又一次的firebase数据库查询?
- python - 不显式导入子包就无法访问它们
- python - 展平 JSON 响应
- angular - Angular 9 Mat 表格编辑选择单元格并绑定数据
- linux - Bash Shell While inside for loop not working-只选择第一个值
- python-3.x - 将python数据框转换为正确的行列格式
- ios - 获取“在执行本机代码时获得 segv”
- javascript - 显示错误响应时 *ngFor 中的 *ngIf 未定义错误
- java - Spring-Boot Maven,缺少依赖项@RestController
- android - 未经检查的警告 - 在编译期间使用 Safe Args 传递数据