断言表达式验证在 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 中的属性级别不起作用 的相关文章

  • Symfony2.1表单日期字段:传递给...的参数1必须是DateTime的实例

    我的实体 var DateTime publishedAt ORM Column name published at type date Assert Date private publishedAt Set publishedAt par
  • 如何在 Sonata Admin Bundle 中显示顶部和侧面菜单?

    没有文件谈论这一点 请帮我 谢谢 管理顶部菜单是根据自动创建的group管理服务定义中的项目 所有管理服务都可以分组并显示在顶部菜单中 Example https github com sonata project SonataPageBu
  • 参数验证最佳实践

    想象一下你有一个应用程序是某种前端您所有的业务逻辑 该前端有很多依赖的 DLL 并且这些 DLL 中的方法可能会在前端执行一次给定方法时重复相互调用 如果您的应用程序的用户不直接访问这些 DLL 您是否应该 1 冒着 小 性能下降的风险并验
  • 将默认消息“验证错误:需要值”更改为“需要值”

    我可以修改这个默认值吗required true 验证消息仅显示 需要值 formId inputId 验证错误 值是必需的 Either使用输入组件的requiredMessage属性
  • twig json_encode 空 json

    我正在从 API 接收元素列表 所有元素的格式都很好 当我使用树枝转储其中一个时 我得到以下信息 Leg 2695 id null reservation null airportStart AIX LES MILLES airplaneT
  • WPF DataGrid 验证错误?

    这可能是预期的功能 但对我来说它确实像是一个错误 我正在使用开箱即用的 WPF DataGrid 绑定到 ObservableCollection 和尝试使用一些验证规则来提供良好的用户反馈 不用说 问题多得我数不过来 但我会坚持眼前的问题
  • FOSUserBundle 和 ACL 业务角色

    这个周末我开始学习 Symfony 2 我没有遇到任何问题 因为我认为该框架有详细记录 我正在使用 FOSUserBundle 包进行 ACL 我想知道是否可以使其类似于 Yii 框架 bizRule return Yii app gt u
  • JQuery 在提交之前需要复选框和单选按钮

    我很难弄清楚这一点 现在我们已经花了 3 个多小时来研究 JQuery 验证的示例和工具 我想做的只是要求选中一个复选框和一个单选按钮 但我不在乎需要哪一个
  • 在 symfony 2.1 中安装并运行 LiipImagineBundle

    以下是我遵循的步骤 在我的composer json中添加了以下内容 require imagine Imagine gt 0 2 8 liip imagine bundle dev 在命令行中运行以下命令 composer update
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • Rails 验证日期范围的唯一性

    我有一个涉及员工缺勤记录的应用程序 我需要确保每条记录的开始日期和结束日期不重叠 例如 如果我输入了从今天开始到明天结束的缺勤记录 则不可能以任何方式在该日期范围内输入另一个缺勤记录 所以我不能制作一个从前天开始 然后在后天或任何更晚的日期
  • 安装 Symfony 2.4.1 lib-icu 4.4 依赖项时出现问题

    我遇到了与以下相同的问题this one https stackoverflow com questions 16753105 problems with lib icu dependency when installing symfony
  • 域驱动设计中输入验证应该放在哪里?

    我想知道我们到底应该在哪里放置输入验证 想象一下 API 调用发送输入以应用用户的空闲时间 在服务层注入验证类并在服务内部调用验证方法是否正确 或者最好将其放在基础设施层甚至领域模型中 我只是想看看在域驱动设计方法中实现 API 输入验证的
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • FOSUserBundle 密码验证

    我正在尝试覆盖 FOSUserBundle 中当前的密码验证 我尝试了几种选择 但仍然找不到解决方案 为了增加密码的 MinLength 我创建了一个validation yml src Acme UserBundle Resources
  • 如何在 Spring Boot 中使用@NotNull?

    我有这样的依赖
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中

随机推荐

  • 如何在命令行上提供非 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