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") 验证通过整数值的主要内容,如果未能解决你的问题,请参考以下文章

lua基础

我应该强制 Python 类型检查吗?

使用 Doctrine 从数据库中获取 Json 的问题

Symfony路由配置教程已开课

Symfony 2 还是 Symfony 1.4? [关闭]

Symfony控制器教程已开课