ColdFusion 将表单值转换为结构

2024-03-31

我正在使用命名格式report[{field-name}] 为我的ColdFusion 应用程序构建一个表单,当使用RoR 或CFWheels 时,它会在后端提供一个名为report 的结构,其中包含我的所有字段名称。我使用的是 FW/1,因此所有表单字段都会放入 RC 范围,而不是保留在表单范围中。我知道可以将我的表单字段转换为 ColdFusion 结构,因为正如我所说,CFWheels 可以做到这一点。我只是不知道如何让我的应用程序做到这一点。

这是我正在谈论的表格的一部分

<dl class="oneColumn">
    <dt class="first"><label for="report[name]">Name</label></dt>
    <dd><input type="text" name="report[name]" class="text" /></dd>
    <dt><label for="report[description]">Description</label></dt>
    <dd><textarea name="report[description]" class="textarea"></textarea></dd>
</dl>

Adam 的上下文是正确的,但他的代码片段是错误的。

一个可以工作的函数是这样的:

<cffunction name="$createNestedParamStruct" returntype="struct" access="public" output="false">
    <cfargument name="params" type="struct" required="true" />
    <cfscript>
        var loc = {};
        for(loc.key in arguments.params)
        {
            if (Find("[", loc.key) && Right(loc.key, 1) == "]")
            {
                // object form field
                loc.name = SpanExcluding(loc.key, "[");

                // we split the key into an array so the developer can have unlimited levels of params passed in
                loc.nested = ListToArray(ReplaceList(loc.key, loc.name & "[,]", ""), "[", true);
                if (!StructKeyExists(arguments.params, loc.name))
                arguments.params[loc.name] = {};

                loc.struct = arguments.params[loc.name]; // we need a reference to the struct so we can nest other structs if needed
                loc.iEnd = ArrayLen(loc.nested);
                for(loc.i = 1; loc.i lte loc.iEnd; loc.i++) // looping over the array allows for infinite nesting
                {
                    loc.item = loc.nested[loc.i];
                    if (!StructKeyExists(loc.struct, loc.item))
                        loc.struct[loc.item] = {};
                    if (loc.i != loc.iEnd)
                        loc.struct = loc.struct[loc.item]; // pass the new reference (structs pass a reference instead of a copy) to the next iteration
                    else
                        loc.struct[loc.item] = arguments.params[loc.key];
                }
                // delete the original key so it doesn't show up in the params
                StructDelete(arguments.params, loc.key, false);
            }
        }
    </cfscript>
    <cfreturn arguments.params />
</cffunction>

我在我的应用程序中(CFWheels 之外)测试了它,它运行得很好。您所做的就是传入一个结构(在我的例子中是来自 FW/1 的 Rc 结构),其中包含应该是结构的内容,但显示为字符串,您将返回一个具有嵌套结构的结构。

Example:

<cfscript>
    Struct['hello[world]'] = 1;
    Struct['hello[earth]'] = 2;
    myhello = $createNestedParamStruct(Struct);
    /* Now myhello equals this:
        myhello.hello.world = 1;
        myhello.hello.eath = 2;
    */
</cfscript>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ColdFusion 将表单值转换为结构 的相关文章

  • 如何使用 D3 (或只是 javascript)将表单选项设置为“选择”

    有没有一种方法可以搜索选择表单元素中的所有选项 并将具有匹配值的选项指定为 已选择 var xStat G var statOptions Points PTS Goals G Assists A Penalty Minutes PIM c
  • 将结构体成员声明为 uint32_t 时的额外字节

    我在使用 stdint h 库中的 uint32 t 类型时遇到问题 如果我运行以下代码 在 Ubuntu linux 11 10 x86 64 g 版本 4 6 1 上 include stdint h include
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 结构体tag和name,为什么声明为name的局部变量会编译?

    在我最近看到的一些代码中 有一个如下定义的结构 typedef struct tagMyStruct int numberOne int numberTwo MYSTRUCT 按照我的理解 tagMyStruct是新的数据类型并且MYSTR
  • 设置表单的父级

    我有一个 Windows 表单 我想从中打开一个状态表单 上面写着 正在保存 然后保存完成后消失 我想将这个小状态表单放在调用表单的中间 我尝试将 StartPosition 属性设置为 CenterParent 但它不起作用 我从其他表单
  • html 文件上传的默认文件夹和文件名

    我正在使用 jQuery Ajax 插件将图像文件从本地计算机上传到网络服务器 该网页呈现一个标记为Upload Image File 用户按下按钮并从浏览器显示的弹出目录列表中选择要上传的文件 服务器上的 PHP 存储图像文件 一切正常
  • 表单提交后 Django 重定向不起作用

    Django 新手 所以这个可能有一个非常简单的答案 但我一生都找不到具体的解决方案 我只是想在使用 FileField 提交表单后重定向到新的 URL 我可以单独导航到该 URL 效果很好 文件上传正确 因此我知道它已正确验证 但重定向返
  • 使用 cfchart 标签在单个饼图中显示多个查询的数据

    请考虑以下代码 现在我的代码中有以下代码 cfm页面内的 tag DataSource xx xx x xx Name of the database sgemail Name of the relevant column event vc
  • 如何在 CF10 中确定闭包变量的范围?

    引自Adobe ColdFusion 10 使用闭包文档 http help adobe com en US ColdFusion 10 0 Developing WSe61e35da8d31851842acbba1353e848b35 8
  • 作为 ColdFusion 开发人员之后,您应该如何继续学习 ASP.NET?

    作为一个花了大约 10 年时间使用 Adob e ColdFusion 进行 Web 应用程序编程的人 我决定将 ASP NET 添加到我的弓中 对于长期使用 CF 和底层 Java 的人来说 ASP NET 对我来说似乎有点陌生 我应该如
  • Coldfusion CreateDate 问题

    我遇到了一些麻烦CreateDate 函数 它只是出错 我不知道为什么 我正在运行此查询以获取新闻报道中的所有日期 以便我可以每月创建一个新闻档案
  • 表单序列化javascript(无框架)

    想知道 javascript 中是否有一个没有 jquery 或任何框架的函数可以让我序列化表单并访问序列化版本 2023 年更新 Use FormData https developer mozilla org en US docs We
  • 动态创建类 - Python

    我需要动态创建一个类 为了更详细地讲 我需要动态创建 Django 的子类Form class 通过 动态 我打算根据用户提供的配置创建一个类 e g 我想要一个名为CommentForm这应该子类化Form class 该类应该有一个选定
  • 如何从子窗体访问winforms父窗体控件

    在 Form1 中 我有一个 DataGridView 和多个文本框 当我单击 Form2 中的 A 按钮时 我需要将 DataGridView 和多个文本框中的数据保存到数据库中 如何在C Sharp Windows应用程序中实现 For
  • 以类型化内存视图作为成员的结构定义

    目前我正在尝试让一个具有类型化内存视图的结构能够工作 例如 ctypedef struct node unsigned int inds 如果 inds 不是内存视图 据我所知 它可以完美地工作 然而 通过内存视图并使用类似的东西 def
  • 在 Go 中初始化嵌入结构

    我有以下内容struct其中包含一个net http Request type MyRequest struct http Request PathParams map string string 现在我想初始化匿名内部结构http Req
  • 如何防止 CFDocument 中的内容中间发生分页?

    我使用 cfdocument 标签从 html css 动态生成 PDF 文件 有些内容块我不想跨越多个页面 经过一番搜索后 我发现根据文档支持 page break inside 样式 然而 在我的测试中 声明 page break in
  • 调用名称中带有变量的变量 - Coldfusion?

    尝试使用方括号表示法来引用动态变量 如果您想了解应用程序 我正在循环访问由查询创建的一组产品 为每个产品创建与其唯一 SKU 相关的字段 我已将其范围缩小到这段代码 当我尝试运行它时 它会抛出 无效表达式 错误
  • 在 JQuery 中发布表单并填充 DIV - 在 IE 中损坏

    我正在尝试创建一个通过 jQuery 发布数据并将返回值填充到同一 DIV 中的表单 这样页面就不会在发布操作时刷新 div div
  • 选择框属性更改时未触发 Webkit Mutation Observer 回调

    我正在尝试监视选择框 或嵌套的option元素 与新的变异观察者 http updates html5rocks com 2012 02 Detect DOM changes with Mutation Observers功能 然而 只有

随机推荐