Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于提交数据的Symfony2表单验证组

基于提交数据的Symfony2表单验证组
EN

Stack Overflow用户
提问于 2012-10-29 14:45:14
回答 1查看 4.5K关注 0票数 3

我有一些复杂的表单,有几个子表单,我希望能够根据在主表单中选择的单选按钮分别验证每个子表单。我想通过验证小组来实现这一点。

注意:我没有data_class模型,我使用数组。

以下是我的简化表单:

代码语言:javascript
运行
AI代码解释
复制
class MyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('xxx', 'text', array(
                'constraints' => array(
                    new Constraints\NotBlank(),
                ),
                'validation_groups' => array(
                    'xxx',
                )
            ))
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'validation_groups' => function(FormInterface $form) {
                return array('xxx');
            },
        ));
    }
}

问题是没有触发对此字段的验证。

当这起作用时,我可以很容易地更改setDefaultOptions以根据提交的数据验证所需的组:

代码语言:javascript
运行
AI代码解释
复制
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'validation_groups' => function(FormInterface $form) {
            $data = $form->getData();

            return array($data['type']);
        },
    ));
}

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-02 17:28:49

您必须将验证组名称传递给约束,而不是在表单本身中。通过将组名分配给表单,可以指定要在验证中使用的约束。

替换

代码语言:javascript
运行
AI代码解释
复制
$builder->add('xxx', 'text', array(
        'constraints' => array(
            new Constraints\NotBlank(),
        ),
        'validation_groups' => array(
            'xxx',
        )
    ))
;

使用

代码语言:javascript
运行
AI代码解释
复制
$builder->add('xxx', 'text', array(
        'constraints' => array(
            new Constraints\NotBlank(array(
                'groups' => 'xxx'
            )),
        ),
    ))
;

默认情况下,约束具有“default”(大写)组,如果未指定,表单将使用此组进行验证。如果您希望验证其他没有显式组的约束,则与指定的组一起传递“默认”约束。

代码语言:javascript
运行
AI代码解释
复制
$resolver->setDefaults(array(
    'validation_groups' => function(FormInterface $form) {
        $data = $form->getData();

        return array($data['type'], 'Default');
    },
));
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13123900

复制
相关文章
验证form表单提交数据是否合法
表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。
OECOM
2020/07/02
2.5K0
js表单提交前验证
<script type="text/javascript"> function check(form) {
用户5760343
2019/08/20
12.6K0
js基础-表单验证和提交
基础知识: 原始提交如下: 1 <form action="/login" method="post" id="form1"> 2 <span>用户</span> 3 <input type="text" name="username" id="username"/><br/> 4 <span>密码</span> 5 <input type="password" name="password" id="passsword"/><br/> 6    7
Ryan-Miao
2018/03/13
13K0
easyui表单提交验证form
方式一,不需要考虑jquery.easyui.min.js版本 <script> $(function () { //针对 设置 novalidate:true $('.validatebox-text').bind('blur', function () { $(this).validatebox('enableValidation').validatebox('validate');
纯粹是糖
2018/03/14
3K0
form表单添加验证码并当验证通过后再提交表单
意思就是,form表单中添加一个验证码验证,然后当点击提交时先核验验证码是否正确,如果正确再提交数据,否则不提交。
岳泽以
2023/04/27
1.7K0
html获取表单提交数据_提交表单的两种方法
转载于:https://blog.csdn.net/yongwoozzang/article/details/83029128
全栈程序员站长
2022/11/08
2.8K0
vue的form表单提交_axios提交表单
利用v-model能比较便捷地上传用户信息的数据,不用一个个参数地拼接。直接在data根据要传的字段定义一个对象,
全栈程序员站长
2022/11/10
7K0
提交表单时input字段非空验证
需求,当提交表单的时候,如果要验证的字段为空,则弹出提示框提示请完善表单信息,并且 return;不执行下一步。
王小婷
2019/08/07
3.2K0
PHP表单提交参数验证类(可修改)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * 表单验证类(参考 原ci CI
用户7657330
2020/08/14
3.6K0
layui表单提交数据_vue表单值无变化不让提交
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
1.9K0
通过Ajax提交表单的数据
当监听到表单的提交事件后,可以调用事件对象的 event.preventDefault()函数,来阻止表单的提交和页面的跳转,示例代码如下:
岳泽以
2022/10/26
2.5K0
表单提交后端如何接收数据_html怎么接收表单提交的内容
然而,我们可以采取引入模块的做法来简化原生代码,并且可以实现文件上传的: 首先,我们需要在cmd或者powershell中安装这个模块:
全栈程序员站长
2022/11/08
6.2K0
表单提交后端如何接收数据_html怎么接收表单提交的内容
form表单如何提交数据(表单中提交请求默认方式)
在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type=’submit’>)就可以进行数据的提交,每一个input标签都需要有一个name属性,才能进行提交。
全栈程序员站长
2022/07/28
6.1K0
JS判断提交表单不能为空 等的验证
上代码 <script type="text/javascript"> function beforeSubmit(form){ if(form.username.value==''){ alert('用户名不能为空!'); form.username.focus(); return false; } if(form.password.value==''){ alert('密码不能为空!'); form.password.focus(); return false; } if(form.password.v
数贝
2019/09/05
7.4K0
表单提交原理_防止表单重复提交
<form>标签的属性enctype设置以何种编码方式提交表单数据。可选的值有三个:
全栈程序员站长
2022/11/08
5.8K0
JS阻止表单submit提交(在提交之前做验证及判断)
在工作中遇到表单提交之前,需要验证用户输入的是否为空,之前使用ajax做提交,在js里面直接做判断,如果用户输入为空则弹出提示框(起初默认是隐藏的,非alert弹出框),让用户重新输入,当输入框获取焦点的时候,弹出的提示框隐藏。
浩Coding
2019/07/12
14K0
java表单提交方法_表单提交的几种方式[通俗易懂]
说明:用户提交按钮或图像按钮时,就会提交表单。使用或都可以定义提交按钮,只要将其特性的值设置为“submit”即可,而图像按钮则是通过的type特性值设置为”image”来定义的。因此,只要我们单击一下代码生成的按钮,就可以提交表单。
全栈程序员站长
2022/09/30
5.4K0
web前端之锋利的jQuery八:jQuery插件的使用(表单验证、表单提交)
插件也称扩展,是一种遵循一定规范的应用程序接口编写出来的程序。 1.jQuery表单验证插件-Validation: 最常使用JavaScript的场合就是表单的验证,而jQuery作为一个优秀的JavaScript库,也提供了一个优秀的表单验证插件-Validation,其拥有以下优点: 内置验证规则:拥有必填、数字、email、URL和信用卡号等19类内置验证规则。 自定义验证规则:可以很方便地自定义验证规则 简单强大的验证信息提示:默认了验证信息提示,并提供自定义覆盖默认提示信息的功能 实时
Java帮帮
2018/03/16
6.9K0
基于vue 表单验证插件Vaild的开发
给对应的input增加对应的data-vaild正则验证属性,data-errmsg增加对应的错误提示信息内容
李维亮
2021/07/08
1.9K0
表单提交
在html中经常用到<form>标签。而我们在使用过程会经常这样用<input name=”sub” type=”submit” value=”提交” /> 也就是说当我们点击提交的时候会执行<form action=”file.php” method=”get” id=”se” name=”se”>action的动作(例子是提交到file.php页面)方法是get。 当没有提交按钮时而是用一个热图加onclick属性来完成,我们可以这样用 <form id=”search” name=”search”
苦咖啡
2018/05/07
4.8K0

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档