如何在 Symfony2 中动态添加验证器?

2024-04-26

I've a password表单字段(not映射到User密码)与其他两个(映射)字段一起用于更改密码表单,first and last.

我必须动态添加验证器:如果值密码为空则不进行验证应该发生。否则一个新的MinLength and MaxLength应该添加验证器.

这是我到目前为止所做的:创建重复的password字段,添加一个CallbackValidator and return if $form->getData() is null.

那么,如何向 $field 添加最小和最大长度的验证器?


哦,好吧,经过几次实验,我自己找到了解决方案。

我将在几天内不回答这个问题,因为人们可以发布更好的解决方案,那真是太受欢迎了:)

特别是,我发现了new FormError部分redundat,不知道是否有更好的方法将错误添加到表单中。老实说,不知道为什么new Form\CallbackValidator工作同时new CallbackValidator won't.

所以,不要忘记添加use像这样的声明:

use Symfony\Component\Form as Form, // Mendatory
    Symfony\Component\Form\FormInterface,
    Symfony\Component\Validator\Constraints\MinLength,
    Symfony\Component\Validator\Constraints\MinLengthValidator;

回调是:

$validation = function(FormInterface $form) {

     // If $data is null then the field was blank, do nothing more
    if(is_null($data = $form->getData())) return;

    // Create a new MinLengthValidator
    $validator = new MinLengthValidator();

    // If $data is invalid against the MinLength constraint add the error
    if(!$validator->isValid($data, new MinLength(array('limit' => 3)))) :

        $template   = $validator->getMessageTemplate();    // Default error msg
        $parameters = $validator->getMessageParameters();  // Default parameters

         // Add the error to the form (to the field "password")
        $form->addError(new Form\FormError($template, $parameters));

    endif;

};

好吧,这是我无法理解的部分(为什么我被迫以前缀Form),但没关系:

$builder->get('password')->addValidator(new Form\CallbackValidator($validation));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Symfony2 中动态添加验证器? 的相关文章

  • Twig:渲染与包含

    我正在创建一个在线商店 如果我使用树枝函数 渲染 而不是 包含 我会遇到性能问题 以下是显示产品目录的代码 目录控制器
  • Scala:将整个列表的 Either 与每个元素的 Either 组合

    我有一个 Either 列表 它代表错误 type ErrorType List String type FailFast A Either ErrorType A import cats syntax either val l List
  • 判断字符串是否包含有效的javascript代码

    我正在寻找一个C 返回的函数true如果字符串包含有效的 JavaScript 语法 例如 IsValidJavascript alert hello 会回来true but IsValidJavascript alertXXhelloZ
  • Symfony2 FosUserBundle 和 SonataUserBundle:覆盖实体?

    我将 FosUserBundle 和 SonataUserBundle 用于我的 Symfony2 项目 我现在很困惑 我想为实体用户添加字段 但它不起作用 例如 架构没有更新 这是我的配置 AppKernel new FOS UserBu
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • 为什么 Composer 更新需要访问数据库

    我正在使用 Symfony 2 8 并在启动一个简单的composer update命令 这个错误出现在我的开发环境中 我正在使用流浪虚拟机 这是错误 Doctrine DBAL Exception ConnectionException
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json
  • Appengine - 隐藏文件夹的部署

    为了验证 SSL 证书 我需要将包含一些文件的隐藏文件夹 well known 上传到我的应用程序 我正在使用 eclipse 部署 java 应用程序 但 appengine 上的应用程序未收到这些文件 我猜他们被过滤掉了 我尝试将隐藏文
  • Blueimp jQuery 文件上传,传递额外的表单数据

    我可以使用一些帮助 我已经设法使 blueimp jQuery 文件上传为我工作 但我仍然绝对是一个新手 我对 jQuery 等知之甚少 所以请尝试将其清晰明了地提供给我尽可能简单 我会尝试具体一点 好的 我想实现的是人们可以上传照片 并为
  • FOSUserBundle & REST Api 调用:如何使用自定义 FormType?

    我在我的 Symfony2 网站上使用 FOSUserBundle 现在我正在开发一个 API 以允许通过 REST API 调用进行注册 我已经覆盖了 FOSUserBundle 的 RegistrationController ApiR
  • 如何使用表单上的提交按钮传递参数

    我想创建一个可以更改 PHP 制作的 mySQL 中的产品数据的程序 我有自动递增并指定每个产品的键列 当我单击编辑产品链接时 它将传递我从每个产品获得的键值 并链接到 editPage php Key data Key a href ed
  • Laravel 验证:存在附加列条件 - 自定义验证规则

    在 Laravel 中指定存在验证规则时 是否有一种方法可以引用另一个字段 我希望能够说输入 a 必须存在于表 a 中 输入 b 必须存在于表 b 中 并且表 b 中列 x 的值必须等于输入 a 最好通过例子来解释 public rules
  • 有没有办法让 ValidationSummary 与客户端验证器一起使用?

    NET ValidationSummary 控件聚合来自回发时触发的验证器的错误消息 有没有某种方法可以让它也显示来自客户端验证器的错误消息 我正在解决的问题是 在长页面上 可能会单击提交按钮 导致某些客户端验证器失败 但永远不会看到错误消
  • Rails validates_与模型的错误消息相关

    我在模型中使用 validates linked 来使用其他模型的验证代码 问题是验证失败的消息是 is invalid 我想将模型验证失败的实际描述错误冒泡到顶部 我发现这个问题 验证与模型的错误消息关联 https stackoverf
  • Twig:选择某些块并渲染它们

    我正在将 twig 模板引擎集成到 PHP 应用程序中 特别是 我想使用 twig 引擎来渲染表单 了解了 symfony2 如何使用 twig 渲染表单小部件后 他们有一个巨大的模板文件 其中包含所有小部件 如下所示 block pass
  • ActiveRecord 布尔验证接受非布尔值

    我正在尝试验证属性是否为布尔值 即 true 或 false 从我期望的 Rails 指南中 validates new out of stock inclusion in true false 可以工作 但它接受非布尔值 例如 Hi 作为
  • Angular 5 表单验证(必需)不起作用

    我正在使用 TypeScript 学习 Angular 5 我对此完全陌生 我现在正在尝试构建一个表单并验证它 但它无法正常工作 这是我的组件 Component selector app login templateUrl login c
  • 从 Symfony2 中的 http_basic auth 注销

    每当我去 admin logout 我已正确重定向到项目的根目录 但在访问时仍处于登录状态 admin 因为没有提示我输入凭据 这是我的配置 安全 yml security firewalls admin area pattern admi
  • zend框架验证模型中的数据而不是表单中的数据

    使用 Zend Framework 2 在我的应用程序中 要编辑数据库中的数据 可以编译 html 表单或发送 http post 请求 我的服务器作为 Web 服务实现 在第二种情况下 不会呈现表单 问题 如果当服务器收到不是从表单发送而
  • 访问 PHP 数组对象受保护的属性

    我正在尝试在 Symfony2 中上传多个文件 我正在尝试访问以下请求对象 但无法获取参数属性 如何将文件一一上传 我得到的错误 致命错误 无法访问第 66 行 var www File src Webmuch FileBundle Ent

随机推荐

  • 下载使用 MVC5 选择的多个文件

    我正在 MVC5 中开发一个视图 如下所示 我需要选择表中的一条或多条记录 并能够下载数据库中以前保存的文件 我一直在寻找解决方案并做了多次测试 但我找不到解决方案 我试图从 javascript 将选定的代码发送到控制器并从中下载文档 但
  • 在我的 angular-cli 项目中从 node-sass 切换到 dart sass

    我在 npm install 期间遇到了 node sass 做各种愚蠢的问题 包括但不限于 GNU c 编译一些东西 可能是它本身 尝试运行python2 7 尝试运行任何其他版本的 python 尝试连接到github 这在企业环境中造
  • XSD 属性 NILLABLE 不起作用

    我正在努力获取一个 xml 文件来根据 XSD 架构进行验证 但我在验证时遇到了问题 每次我验证时都会收到错误消息 架构有效性错误 元素 http services website com ProgramResponse Populatio
  • 如何根据当前位置设置正确的纬度和经度

    我的目标是使用 Google Places API 进行自动完成预测 现在我想制作某种算法 该算法将采用当前位置的纬度和经度 并仅对直径为 100 200 公里的地点进行预测 那么 此时我获取用户当前位置的纬度和经度 如何设置100 200
  • 龙目岛与休眠

    这可能吗 没有看到太多关于它的讨论 当然 根据我的经验 它效果很好 这是一个示例实体 Entity Cache usage CacheConcurrencyStrategy READ WRITE public class PingerEnt
  • 避免 JSF Web 应用程序上的后退按钮

    我正在显示非常敏感的数据 用户从我的服务器注销后 我不希望其他用户能够看到点击浏览器后退按钮的数据 我怎样才能实现这个目标 默认情况下 浏览器的后退按钮根本不会向服务器发送 HTTP 请求 相反 它从浏览器缓存中检索页面 这本质上是无害的
  • 如何显示信息窗口而不显示谷歌地图中标记的图标

    我可以只显示谷歌地图中的信息窗口吗 我正在使用 Google Map 的 V2 api 开发 Android 应用程序 我想在信息窗口中显示路线信息 但不想显示标记图标 那么信息窗口可以与标记分开吗 如果是这样 我怎样才能在隐藏标记的同时只
  • 在 $stateProvider.state 中分配多个控制器

    对于高级角度用户来说 这可能是一个简单的问题 但我没有在某个地方找到这个问题得到很好的解释 所以我正在重构我的代码 当我意识到一个视图中有两个控制器时 当控制器 ACtrl 由 stateProvider 绑定并且控制器 BCtrl 由 n
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 如何更改 React Material UI 上的 Stepper 颜色?

    在上面的屏幕截图中 我尝试将步骤颜色更改为 绿色表示正确 黄色表示正在进行 红色表示不正确 我怎么能这样做呢 如果有人仍在寻找这个问题 对于 MUI 5 可以通过SX属性 https mui com system the sx prop o
  • FlatList 内的 TextInput 在离屏时失去焦点

    当 TextInput 获得焦点并且用户滚动直到输入离开可见框架时 输入会变得模糊并且键盘消失 我该如何解决 我正在 Android 模拟器中运行代码 在 iOS 上不会出现此问题 如果您尝试点击 FlatList 底部的 TextInpu
  • 在 Woocommerce 中的账单详细信息之前添加新的自定义结帐字段?

    我可以将一组自定义字段添加到 WooCommerce 结账屏幕 但需要将其移至 账单详细信息 上方 那怎么办呢 根据这个 WooCommerce 官方文档 https docs woocommerce com document tutori
  • 无法使用 PDI 步骤连接到 HDFS

    我已经配置成功了Hadoop 2 4 in an Ubuntu 14 04 虚拟机 from a 视窗8系统 Hadoop 安装工作绝对正常 而且我还可以从 Windows 浏览器查看 Namenode 附图如下 所以 我的主机名是 ubu
  • 如何以编程方式获取设备的当前地理位置

    我需要获取设备当前的地理位置 场景 如果我在US my device location should be US 和我在的时候的情况一样UK my device location should be UK 我需要用于查找此地理位置的示例代码
  • 如何在 IndexedDB 中创建具有多个条件的查询

    我有一个商店有多个我想要查询的索引 为了举例 我们假设我有一个消息存储 其中包含 user id 索引和 create date 时间戳 并且假设我有索引 user id create date user id create date 我知
  • System.Net.WebException:服务器违反了协议

    我有以下代码来进行调用 然后返回 xml private string Send string url try HttpWebRequest request HttpWebRequest WebRequest Create url usin
  • 在watson会话中,如何从程序中的一个节点跳转到另一个节点?

    我面临一个问题 我已经在 Watson 对话工作区中创建了对话 并且我知道如何跳转到对话中的另一个节点 我的问题是如何跳转java程序 例如 我的对话中有5个节点 它们是顺序 node1 gt node2 gt node3 gt node4
  • 字符串文字:它们去了哪里?

    我对字符串文字的分配 存储位置感兴趣 我确实找到了一个有趣的答案here https stackoverflow com questions 51592 is there a need to destroy char string or c
  • Oracle 10g 内连接的 0RA-00952

    这有效 SELECT PRODUCT INFOS FIELD VALUE PRODUCT INFOS COIL ID SYSTEM PRODUCT INFOS TIME STAMP PRODUCT INFOS FIELD NAME FROM
  • 如何在 Symfony2 中动态添加验证器?

    I ve a password表单字段 not映射到User密码 与其他两个 映射 字段一起用于更改密码表单 first and last 我必须动态添加验证器 如果值密码为空则不进行验证应该发生 否则一个新的MinLength and M