首页 > 解决方案 > 我可以使用 Symfony 的验证约束 NotEqualTo 不区分大小写吗

问题描述

我正在尝试使用 Symfony 的验证约束NotEqualTo来防止使用某个字符串值。

正如文档所述,这应该可以使用 NotEqualTo 约束。这有效,尽管是以区分大小写的方式。但是,我需要它也以不区分大小写的方式工作。我可以通过创建自定义约束来解决这个问题,但也许我只是忽略了一个更琐碎的解决方案。

class Foo
{
    /**
     * @Assert\Length(
     *     min=4,
     *     max=150
     * )
     * @Assert\NotEqualTo(
     *     value="bar"
     * )
     */
    private $name;
}

在此示例中,保留关键字是bar。Symfony 不会允许bar但会允许Bar, BAR, BaR, ...

我可以NotEqualTo以不区分大小写的方式使用 Symfony 的验证约束吗?

标签: phpsymfonyvalidationsymfony4

解决方案


NotEqualTo如前所述,这是不可能的。

解决问题的一种简单方法是使用Regex字符串约束

 /**
  * @Assert\Regex(
  *     pattern="/^(bar)$/i",
  *     match=false,
  *     message="'Bar' is a reserved name",
  * )
  */
 private $name;

也可以创建自己的自定义约束。但我觉得写代码不安全。


推荐阅读