未绑定表单字段的验证

2024-05-01

我有一个表单,其中使用 'property_path' => false 添加了额外的未绑定字段。

我想在这个领域进行简单的验证,我发现很多答案建议使用类似的东西

$builder->addValidator(...);

但我发现在 symfony 2.1 中 $builder->addValidator 已被弃用。有谁知道在 Symfony 2.1 中对未绑定字段进行验证的正确方法是什么?


Edit :

我刚刚就该主题做出了更完整的回答Symfony 使用映射的虚假表单字段验证表单 https://stackoverflow.com/questions/12911686/symfony-validate-form-with-mapped-false-form-fields/13086678#13086678

原答案

验证表单中的未绑定(非映射)字段没有很好的文档记录,并且快速发展的表单和验证器组件使少数示例变得过时(对于 Symfony 2.1.2)。

现在,我成功地使用事件侦听器验证了非映射字段。 这是我的简化代码:

namespace Dj\TestBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

use Symfony\Component\Form\FormEvents;
use Dj\TestBundle\Form\EventListener\NewPostListener;

class PostType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('lineNumber', 'choice', array(
                        'label' => 'How many lines :',
                        'choices' => array(
                            3 => '3 lines',
                            6 => '6 lines'
                        ),
                        // 'data' => 3, // default value
                        'expanded' => true,
                        'mapped' => false
                    ))
                ->add('body', 'textarea', array(
                        'label' => 'Your text',
                        'max_length' => 120));

        // this listener will validate form datas
        $listener = new NewPostListener;
        $builder->addEventListener(FormEvents::POST_BIND, array($listener, 'postBind'));
    }

    // ... other methods
}

和事件监听器:

namespace Dj\TestBundle\Form\EventListener;

use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormError;

/**
 * listener used at Post creation time to validate non mapped fields
 */
class NewPostListener
{

    /**
     * Validates lineNumber and body length
     * @param \Symfony\Component\Form\FormEvent $event
     */
    public function postBind(FormEvent $event)
    {
        $form = $event->getForm();
        $data = $event->getData();

        if (!isset($data->lineNumber)) {
            $msg = 'Please give a correct line number';
            $form->get('lineNumber')->addError(new FormError($msg));
        }
        
        // ... other validations

    }
}

这就是我验证非映射字段的方法,直到我找到如何使用验证器执行此操作。

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

未绑定表单字段的验证 的相关文章

  • Symfony2 路由全局 {_locale} 要求

    我在routing yml 中指定了每个路由中的参数 locale 要求 我认为这一定可以简化这种情况 路由 yml ProjectBaseBundle index pattern locale defaults controller Pr
  • Symfony2 和 Doctrine:如何获取同一个 id 的两个不同对象?

    我有这样的场景 对象 A 对其他对象 B C D 有一些引用 对象 B 对其他对象 A F G 有一些引用 对象 C 对其他对象 A 有一些引用 等等 在我的代码中 出于临时原因 我需要制作一个对象 比如A 的 副本 不 我不能使用不同的结
  • 在 Symfony2 中流式传输响应

    我正在尝试文档中的这个示例 在 Symfony2 中流式传输响应 param Request request return Response render Route streamedResponse name streamed respo
  • Symfony2.1映射错误:class_parents()

    我在 Symfony2 1 项目中尝试使用 Doctrine2 从表 通过实体 获取数据时遇到问题 这是我收到错误的控制器 Country list public function countrylistAction em this gt
  • Symfony2 __toString() 错误

    我在将实体保存回给我时遇到此错误 Catchable Fatal Error Method My BusinessBundle Entity Type toString must return a string value in var w
  • 在 Symfony2 控制器中处理 Ajax 错误

    我正在尝试处理 Ajax 中的错误 为此 我只是想重现这个那么问题 https stackoverflow com questions 407596 how do you handle errors from ajax calls在交响乐中
  • Symfony2 用于子域路由的多个配置和路由文件

    我们正在构建一个 Symfony2 应用程序 它将使用子域为不同部分提供服务 api tld com API 系统 docs tld com 文档 asset tld com 图像服务系统 我们的做法是为每个子域创建一个应用程序目录 并将标
  • Symfony 2.1 安全跨子域

    在应用程序上运行 Symfony 2 1 我们有不同的代码沙箱 例如 aequasi someurl com dev someurl com hotcarl someurl com 我似乎不明白为什么 但是当我登录时aequasi 我去ho
  • symfony 中的 Assetic 文件位于防火墙后面?

    我有简单的登录页面和安全设置 如下所示 firewalls main pattern form login provider fos userbundle csrf provider form csrf provider use refer
  • 如何向 Symfony 2.1 添加命名空间?

    我有一个使用命名空间的第三方库 我想将其添加到供应商目录中 由于某些原因 我无法为此库使用作曲家 使用 ClassLoader 的 add 方法添加它对我不起作用 找不到类 详细地 我正在使用 Symfony 2 1 7 app autol
  • 如何在 Symfony 2 中有效地使用分页和教义?

    我想在 Symfony 中使用 Doctrine ORM 和分页方法 KnpPaginatorBundle 看起来简单易用 我还使用 Doctrine 存储库 因为查询可以轻松地重用和测试 这个捆绑包的工作原理与我发现的其他捆绑包一样 它需
  • 如何获取 Symfony2 中控制器的所有路由列表?

    我有一个控制器 它实现了所有路线 URL 我的想法是为所有帮助页面提供通用索引 有没有办法获取控制器 从控制器内 定义的所有路由Symfony2 您可以做的是将 cmd 与 最高 SF2 6 一起使用 php app console rou
  • Symfony2 会话闪存与树枝中的 if 子句不起作用

    我尝试对设置的会话闪存做出反应 但总是得到其他路径 交响乐2 1 3 控制器 this gt get session gt getFlashBag gt set contactActionNoticeError Message not se
  • Symfony POST 变量始终为空

    这是我的 Symfony 控制器 class MyPageController extends Controller public function indexAction Request request postData request
  • 表单:避免将非提交字段设置为 null

    我有一个简单的模型 源简化 class Collection public page public limit 以及表单类型 class CollectionType extends AbstractType public function
  • symfony 2 中相同的 url 需要多个角色

    这是我的 security yml 的访问控制列表的样子 access control path admin roles IS AUTHENTICATED FULLY path admin roles ROLE ADMIN 我想要做的是 用
  • Symfony 2 登录后重定向

    在 Symfony 2 中 您可以设置注销目标 以便注销后您将被重定向到 main 但是 登录后您将被重定向到 有没有办法为 成功 登录设置目标 firewalls dev pattern profiler wdt css images j
  • 不需要 UserProvider 的自定义身份验证

    我在网上寻找适合我的配置的解决方案 但找不到满足我需求的东西 到目前为止 我已经为此工作了整整三天 但我无法使其正常工作 我确信有几件事我不明白 我正在分支 2 1 上开发我的 symfony 应用程序 为了让这个简短 我有一个网络服务 我
  • Symfony2 - 表单和 Twig 模板中的整个子实体

    在 Sonata 管理表单中 我想显示与当前对象相关的所有图像 不需要编辑它们 我设法使用实体字段类型及其属性选项来选择图像 URL 作为标签 以便我可以调用模板中的所有图片 gt add image entity array class
  • 如何在 Symfony 2.1 中使用 ChoiceList?

    我有一个包含美国各州列表的文件 Alabama Alaska etc 在 symfony 2 0 中 我使用 ChoiceListInterface php 在我的表单中使用它 我简单地写了这个

随机推荐

  • PHP 未定义索引/未定义偏移解决方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 注意 未定义的变量 和 注意 未定义的索引 https stackoverflow com questions 4261133 php notice undefined variable an
  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • JavaScript 日期对象 英国日期

    我有以下代码 datePicker change function dateSet datePicker val dateMinimum dateChange dateSetD new Date dateSet dateMinimumD n
  • 什么是克朗?我该如何使用这个? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions http
  • 如何扩展 gradle 的 clean 任务来删除文件?

    到目前为止 我已将以下内容添加到我的 build gradle 中 apply plugin base clean lt lt delete rootDir api library auto generated classes printl
  • 注册不起作用 - 服务器返回 404 错误代码

    MongoDB Stitch iOS SDK 注册问题 我试过这个 let stitchClient StitchClient appId
  • 在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

    Quoting https phpunit readthedocs io en 9 5 writing tests for phpunit html testing php errors warnings and notices https
  • 如何使用 -fPIC 标志重新编译 libperl.a 目标文件?

    当试图修复一些问题时出现了这个问题安装问题 https stackoverflow com q 43191675 2173773 with QtCore4 https metacpan org pod QtCore4 在某一点make尝试运
  • 使用 pdfbox 1.8.8 进行视觉签名

    我正在尝试生成带有视觉签名和 pdfbox 的 PDF 我有两个流 似乎 pdfbox 只能处理文件 如果没有三个临时文件 我就无法使其工作 我可以看到从here https github com apache pdfbox blob b7
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • Symfony 功能测试失败,但相同的请求在浏览器中有效

    我跟着Symfony 文档 http symfony com doc current book testing html functional tests关于功能测试 以便编写我的第一个测试 但我有一些问题 我通过浏览器得到的响应效果很好
  • Heroku:无法访问该网站

    我的 heroku 应用程序在构建后无法访问 日志显示 Web 服务器节点和工作节点都在监听 这是一个由 Gunicorn 运行的 Flask 应用程序 它有 2 个插件 newrelic 和 redistogo Error This si
  • 面临减法时的算法复杂性

    我必须简化以下公式才能获得算法的时间复杂度 n 2 n 3 是否有任何适用的规则可以让我进一步简化这个表达式为更 常见 的 n 2 或类似的东西 我假设这就是结果 可能是错误的 我根本不知道如何处理这里的减法 通常 如果两个值相加 您只考虑
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • 无法在 Dockerfile 中运行 sysctl 命令

    我正在尝试制作我的第一个 dockerfile 我对此很陌生 并且我需要系统来运行命令sysctl w kernel randomize va space 0 它是一个实验室环境 但我收到错误 sysctl 设置键 kernel rando
  • PyPandoc 与 PyInstaller 结合使用

    我安装了 PyInstaller 来为我的 python 脚本创建可执行文件 效果很好 我使用 PyPandoc 创建 docx报告 当正常的 python 文件运行时 它也可以正常运行 但不能从 PyInstaller 生成的可执行文件运
  • Python Flask 将基于经纬度的半径过滤器计算转换为 SQLalchemy

    我目前正在尝试实现半径的计算 我有一个带有房间的数据库 每个房间都有不同的地址以及纬度和经度 用户可以在搜索表单中输入城市名称来搜索该城市的房间 这里我想显示一个结果页面 其中包含搜索城市的房间 搜索城市半径60公里内其他城市的所有房间 H
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的
  • HttpContext.Current.Request.Form 复选框

    我将表单发布到 MVC 控制器 我想在其中处理用户在类似 html 结构的网格上所做的一些更改 我在视图中为每一行呈现了呈现为简单 HTML 的复选框
  • 未绑定表单字段的验证

    我有一个表单 其中使用 property path gt false 添加了额外的未绑定字段 我想在这个领域进行简单的验证 我发现很多答案建议使用类似的东西 builder gt addValidator 但我发现在 symfony 2 1