断言表达式验证在 Symfony 2.4 中的属性级别不起作用

2023-12-23

我试图通过 @Assert\Expression 在字段级别验证属性(http://symfony.com/doc/2.4/reference/constraints/Expression.html http://symfony.com/doc/2.4/reference/constraints/Expression.html).

它使用以下代码在类级别工作:

/**
 * Foo
 * 
 * @ORM\Table(name="foo")
 * @ORM\HasLifecycleCallbacks()
 * @UniqueEntity("slug")
 * @Assert\Expression(
 *     "this.getPriceFor2PaxStandard() != null or (this.getPriceFor2PaxStandard() == null and !this.isPriceForAccLevelRequired('standard'))",
 *     message="The price for 2 pax standard is required",
 *     groups={"agency_tripEdit_finalsave"}
 * )
 * 
 */
class Foo implements ISpellcheckerLocaleProvider, ProcessStatusAware, DataTransformer
{

但如果我在属性级别使用相同的代码(应该没问题)则不起作用:

/**
     * @var decimal
     *
     * @ORM\Column(name="price_for_2_pax_standard", type="decimal", precision=16, scale=4, nullable=true)
     * @Assert\Expression(
     *     "this.getPriceFor2PaxStandard() != null or (this.getPriceFor2PaxStandard() == null and !this.isPriceForAccLevelRequired('standard'))",
     *     message="The price for 2 pax standard is required",
     *     groups={"agency_tripEdit_finalsave"}
     * )
     */
    private $priceFor2PaxStandard;

另外,如果我使用也不起作用value代替this.getPriceFor2PaxStandard()当使用断言作为属性级别时。

任何提示将不胜感激:-)


这是 symfony 中的一个错误。如果您查看 ExpressionValidator 的代码,您会发现它会跳过验证值是否为 null 或空字符串。这对于其他一些约束很有用,但在 ExpressionValidator 中毫无意义。我刚刚提交了一份拉取请求 https://github.com/symfony/symfony/pull/11590要解决这个问题。目前解决这个问题最简单的方法是切换到回调验证器。

<?php

namespace Symfony\Component\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Exception\UnexpectedTypeException;

class ExpressionValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint)
    {
        if (!$constraint instanceof Expression) {
            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Expression');
        }

        if (null === $value || '' === $value) {
            return;
        }

        //...
    }

    //...

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

断言表达式验证在 Symfony 2.4 中的属性级别不起作用 的相关文章

  • 如何在休眠中持久保存实体期间验证实体的约束

    我有一个带有字段名称的实体 我希望它不超过255 所以我这样定义它 Entity public class A implements Serializable NotNull Size max 255 private String name
  • symfony 2.0足够稳定可以使用吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我怀疑是否交响乐2 0够稳定可以使用吗 因为我从来没有用过Symfony before 看起来交响乐2比以前的版本好得多 我不想在几个月后重新学
  • 不是有效的实体或映射的超类

    我有 2 个捆绑包 其中 1 个 CMS 捆绑包将作为父捆绑包 我在两个捆绑包中都有重复的实体 喜欢UserCMS 捆绑包中的用户我将其设为抽象类 不确定这是否是正确的选择 实际上 我想要的是在需要时扩展我的用户实体 CMS用户 abstr
  • symfony2形式选择和mongodb

    使用 Entity 时 我们可以从 Entity 加载选择via表单字段类型实体 builder gt add group entity array class gt Fist CoreBundle Document Group 但是当使用
  • javax.annotation.Nonnull 与断言

    我在方法参数上使用 Findbugs 和 javax annotation Nonnull 在私有方法上 我通常添加一个断言行来检查是否为空 例如 private void myMethod Nonnull String str asser
  • Django:显示管理员验证错误的自定义错误消息

    我正在使用 Django 1 2 4 我有一个模型 其中有一个需要验证的字段 当验证失败时 我想向用户显示自定义错误消息 模型编辑是在管理界面中完成的 这就是我目前正在做的事情 def clean fields self exclude N
  • ASP.NET MVC 的验证选项有哪些

    net mvc 的验证选项有哪些 他们中的任何一个都有像 Webforms 那样的很好的验证摘要吗 您可以使用 MVC html 验证摘要 请参阅此博客 http blog maartenballiauw be post 2008 08 2
  • 重置输入控件的边框颜色 (HTML/Javascript)

    有谁知道使用 javascript 修改输入控件后如何重置它的边框颜色 通过突出显示其中包含不正确或无效数据的字段等来进行验证非常有用 例如 改变边框 document getElementById myinput style border
  • 如何在 PHP 中验证电子邮件? [复制]

    这个问题在这里已经有答案了 如何使用 php5 验证输入值是有效的电子邮件地址 现在我正在使用这段代码 function isValidEmail email pattern a z0 9 a z0 9 a z0 9 a z0 9 a z
  • Codeigniter 使用表单验证函数“匹配”子数组 POST

    上周刚开始使用 CI 并遇到了这个问题 里面要放什么matches如果我将表单数据作为数组传递 函数会怎样 我使用 html 表单中的数组来定位单个数组内的所有输入字段 以防我想传递用户生成的输入 例如多个电话号码或电子邮件 所以所有东西都
  • HTML 表单检查空字段

    我已经在 HTML 表单中实现了输入验证 但是 如果出现任何错误 它不会提示用户 并且仍然继续将其数据发送到测试服务器 下面是我的代码
  • 在 laravel 中创建项目时,output.php 中 Symfony 解析错误

    安装了 Laravel 5 6 还安装了 PHP 7 0 当我尝试时 laravel new sample project 它创建了所需的文件和依赖项 但出现以下错误 PHP Parse error syntax error unexpec
  • 使用 Java 根据本地 DTD 文件验证 XML 文件

    如何根据本地存储为文件的 DTD 验证 XML 文件 XML 文件没有任何 DOCTYPE 声明 或者可能有一个应该被覆盖的声明 我看了一下这个线程 https stackoverflow com questions 470313 net
  • Symfony 2 SecurityContext 类已弃用

    当我尝试访问 symfony demo 上的 app example 时 出现以下错误 错误 Symfony Component Security Core SecurityContext 类是 自 2 6 版本起已弃用 并将在 3 0 中
  • 在 Linux 内核中使用断言

    我有一个问题assert 在Linux中 我可以在内核中使用它吗 如果不是 例如 如果我不想输入 NULL 指针 您通常会使用什么技术 对应的内核宏是BUG ON and WARN ON 前者适用于当您想让内核恐慌并使系统崩溃 即不可恢复的
  • Symfony2:间歇性高响应时间/缓慢 SessionHandlerProxy::read() 完成

    我看到来自 Symfony2 会话管理器组件的非常奇怪的行为 特别是 SessionHandlerProxy read 函数在我的生产环境中有时会非常慢 Symfony Component HttpFoundation Session St
  • 在 symfony 2.1 中安装并运行 LiipImagineBundle

    以下是我遵循的步骤 在我的composer json中添加了以下内容 require imagine Imagine gt 0 2 8 liip imagine bundle dev 在命令行中运行以下命令 composer update
  • Symfony Finder 忽略以点开头的文件

    我使用 Finder 发送假脱机电子邮件 但自动名称生成器会在文件名中添加点 有时它们会出现在文件的开头 似乎查找器无法获取具有该名称的文件 那么这些文件是隐藏的 有人经历过这种行为吗 有什么建议如何使用查找器来查找隐藏文件吗 Thx 刚刚
  • Symfony 2 FOSUserBundle 与产品表的关系

    如果之前有人问过这个问题 我提前道歉 我已成功设置 FOSUserBundle 我正在尝试设置 http symfony com doc current book doctrine html http symfony com doc cur
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB

随机推荐

  • 如何在命令行上提供非 Base 64 编码的密钥

    关于AWS S3工具 同步 和 客户提供的加密密钥 它说here http docs aws amazon com cli latest reference s3 sync html sse c key 字符串 客户提供的加密密钥 用于服务
  • History.pushState 之后前进按钮不起作用

    我已经找到了如何修复后退按钮 但前进按钮仍然无法修复 网址会更改 但页面不会重新加载 这就是我正在使用的 anchor wrapper css position relative slanted css top 0 Do something
  • PHP 错误:警告:无法修改标头信息 - [重复] 已发送标头

    这个问题在这里已经有答案了 您好 我正在用 PHP 编写一个简单的邮件脚本 我发现的每个人都说它可能是前面的空白 但正如你所看到的 我在我的代码中找不到类似互联网上解决方案的内容 错误说 输出从 customers e e 5 httpd
  • 运行时控制台中的核心数据信息和错误

    我在运行时在控制台中遇到了以下消息 我不知道为什么 我到处搜索过 似乎没有人遇到这个 信息 获取响应无法打开文件 Users userName Library Application Support iPhone Simulator 7 0
  • 如何在 C# 中生成唯一的文件名

    我已经实现了一种算法 将为保存在硬盘驱动器上的文件生成唯一的名称 我正在追加DateTime 小时 分钟 秒和毫秒但它仍然会生成重复的文件名 因为我一次上传多个文件 为要存储在硬盘驱动器上的文件生成唯一名称以便没有两个文件相同的最佳解决方案
  • powershell的并行foreach最多使用5个线程吗?

    The throttlelimit的参数foreach parallel可以控制执行脚本时使用多少个进程 但即使我设置了 我也不能有超过5个进程throttlelimit大于5 该脚本在多个 powershell 进程中执行 所以我检查脚本
  • 使用实体框架进行软删除(是历史列)

    我正在使用一个数据库 设计者决定用 IsHistorical 位列标记每个表 没有考虑正确的建模 并且我无法更改架构 在开发与导航属性交互的 CRUD 屏幕时 这会造成一些摩擦 我不能简单地获取一个产品 然后编辑它的 EntityColle
  • 使用 XMLHttpRequest Level 2 模拟文件表单提交

    在我当前的页面上 我使用带有输入元素的旧文件上传 然而 现在我已经从这个非常好的系列文章中实现了拖放 http www sitepoint com html5 file drag and drop http www sitepoint co
  • macOS Catalina 中禁用 SIP 的只读文件系统 [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我正在尝试将一些文件从路径复制到我的库路径 usr lib 我正在尝试使用 sudo cp my file usr lib 我得到了这
  • 工具栏搜索建议主题

    我正在尝试将搜索建议更改为 浅色主题 我正在使用 appcompat v7 22 2 0 库并阅读有关新功能 https philio me styling the searchview with appcompat v21 用于自定义搜索
  • 猪拉丁法翻译

    尝试用 ruby 编写方法来翻译 pig latin 中的字符串 规则 规则 1 如果单词以元音开头 则在单词末尾添加 ay 音 规则2 如果单词以辅音开头 则将其移动到单词的末尾 然后在单词的末尾添加 ay 音 并且当单词以2个辅音开头时
  • Flink 中是否可以实现具有多个工作线程的全局状态?

    在 Flink 文档中 我到处都看到状态对于映射函数和工作线程来说是独立的 这在独立方法中似乎很强大 但是如果 Flink 在集群中运行怎么办 Flink 能否处理所有工作人员都可以添加数据并查询数据的全局状态 来自 Flink 关于状态的
  • 在 spring-boot 2.6.2 中,无法从类路径初始化 Logback 日志记录:logback-spring.groovy

    我将 spring boot 2 5 6 的 spring boot 应用程序迁移到 spring boot 2 6 2 但从那时起 启动告诉 java lang IllegalStateException 无法从类路径初始化 Logbac
  • 列出可供下载的文件 - 文件存储在仅应用程序可访问的位置

    我有一组 pdf 文件存储在只能由应用程序访问的位置 因此这些文件无法通过 http 直接访问 文件路径由数据库存储 当用户选择下载文件时 将执行以下代码 Response ContentType Application pdf Respo
  • 调试时无法查看变量值

    我正在尝试调试我正在处理的当前应用程序的部分 但是当我尝试检查属性 变量的值时 我收到错误 Cannot evaluate expression because a thread is stopped at a point where ga
  • Angular 5无法匹配延迟加载模块的命名出口上的任何路由[重复]

    这个问题在这里已经有答案了 我的根模块的路线是这样的 RouterModule forRoot path redirectTo management portal pathMatch full path management portal
  • 忽略绑定初始化

    最初的问题来自于关于折线的个人项目Xamarin Forms Map https github com Emixam23 XamarinByEmixam23 tree master Detailed 20Part Controls Map
  • 为什么 dropna() 不起作用?

    系统 Cloudera Quickstart VM 5 4 上的 Spark 1 3 0 Anaconda Python 版本 这是一个 Spark 数据框 from pyspark sql import SQLContext from p
  • 维基百科 API + 跨域请求

    我正在尝试使用 JavaScript 访问维基百科CORS http en wikipedia org wiki Cross origin resource sharing 20 29 据我所知 维基百科应该支持CORS http www
  • 断言表达式验证在 Symfony 2.4 中的属性级别不起作用

    我试图通过 Assert Expression 在字段级别验证属性 http symfony com doc 2 4 reference constraints Expression html http symfony com doc 2