Symfony @Assert\Type("string") 验证通过整数值
Posted
技术标签:
【中文标题】Symfony @Assert\\Type("string") 验证通过整数值【英文标题】:Symfony @Assert\Type("string") validation passes with integer valueSymfony @Assert\Type("string") 验证通过整数值 【发布时间】:2021-09-30 17:57:08 【问题描述】:我在验证 symfony 4 中的字符串类型字段时遇到问题。这是一个示例:
<?php
class Foo
/**
* @Assert\NotNull
* @Assert\Type("string")
*
* @var string
*/
protected string $uid;
当我像这样发送(PUT)请求时,它通过了:
"uid": 5,
验证正在以相反的方式进行。如果我将该字段设置为整数并传递一些像“test”这样的字符串,则得到正确验证。
【问题讨论】:
我不确定我是否理解正确。如果您将“test”作为值发布会发生什么? 【参考方案1】:这是因为整数在 PHP 中用作字符串时会自动解释为字符串。您将需要使用regex constraint,文档中的示例可以满足您的需求。像这样的:
<?php
class Foo
/**
* @Assert\NotNull
* @Assert\Regex(
* pattern="/\d/",
* match=false,
* message="Your name cannot contain a number"
* )
*
* @var string
*/
protected string $uid;
【讨论】:
以上是关于Symfony @Assert\Type("string") 验证通过整数值的主要内容,如果未能解决你的问题,请参考以下文章