Symfony @Assert\Type("string") 验证通过整数值
Symfony @Assert\Type("string") validation passes with integer value
我在 symfony 4 中验证字符串类型的字段时遇到问题。这是一个示例:
<?php
class Foo {
/**
* @Assert\NotNull
* @Assert\Type("string")
*
* @var string
*/
protected string $uid;
}
当我像这样发送 (PUT) 请求时,它通过了:
{
"uid": 5,
}
验证以相反的方式进行。如果我将字段设置为整数并传递一些字符串,如“test”,则正确验证。
这是因为整数在 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 4 中验证字符串类型的字段时遇到问题。这是一个示例:
<?php
class Foo {
/**
* @Assert\NotNull
* @Assert\Type("string")
*
* @var string
*/
protected string $uid;
}
当我像这样发送 (PUT) 请求时,它通过了:
{
"uid": 5,
}
验证以相反的方式进行。如果我将字段设置为整数并传递一些字符串,如“test”,则正确验证。
这是因为整数在 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;
}