如何使用ColdFusion创建一个将表单输入存储在会话变量中的数组?

时间:2012-04-13 12:13:37

标签: arrays coldfusion session-state

我正在尝试在ColdFusion中创建一个存储在会话变量中的数组。我有一个HTML表单,将输入传递给操作页面并将其存储在数组中。但是我遇到了问题,主要是在设置数组时,我尝试使用cfif来检查数组是否已定义,但是它没有用。

以下是HTML表单:

<form name="input" action="html_form_action.cfm" method="post">
id <input type="text" name="id" />
<input type="submit" value="Submit" />
</form>

这是ColdFusion代码:

<cfapplication name="arrays" clientmanagement="Yes"  sessionmanagement="Yes">

<cfif isDefined('form.id')>
<cfset session.urlid = form.id>


<cfset myArray = arrayNew(1)>

<cfset session.arrData[(arrayLen(session.arrData)+1)] = #session.urlid#>
</cfif>


<cfloop array=#session.arrData# index="name">
<cfoutput>
<form name="input">
item<input type="text" name="id" placeholder=#name#>

</form>
</cfoutput>
</cfloop>

我想知道我怎么也可以取消设置会话以便从数组中删除所有内容,我一直在阅读ColdFusion文档,我无法看到如何做到这一点。我已经在PHP中完成了这项工作,我认为ColdFusion会更容易,但我认为缺乏资源会让这很困难。我很感激有关如何使这项工作的任何建议。 感谢。

3 个答案:

答案 0 :(得分:1)

我不完全确定你的第一个问题究竟是什么,但我会尽我所能!

由于您不确定form.id是否存在,我会查看“cfparam”标记。 这定义了action.cfm页面的预期参数。

<cfparam name="form.id" default="0" type="integer" />

然后你可以检查一下form.id GT 0你是否愿意......?

至于在ColdFusion中设置一个数组,你差不多...... 你创建了一个很棒的新数组...... 但你真的不必为每个数组值定义整数... 只需使用:

<cfset arrayAppend(session.arrayVar,variableToAppend) />

至于“取消设定”会话变量...... 大多数人只是做

<cfset structDelete(session,'arrData') />

我希望我没有错过任何东西...... 如果您还需要其他任何东西 - 请告诉我。

答案 1 :(得分:1)

看起来这就是你想要做的事情。

<cfparam name="form.id" default="0"/>
<cfset session.urlID = form.id/>

<cfif NOT structKeyExists(session,'arrData')>
    <cfset session.arrData = arrayNew(1)/>
</cfif>

<cfset arrayAppend(session.arrData,session.urlId)/>

但它仍然有点不确定。您将ID作为URLID存储在会话中,然后将其复制到arrData的索引(在会话中)。如果session.urlID中有一个以上的原始值,我认为你最终会得到一个循环引用。仍然..我认为以上是你可能会尝试的。

答案 2 :(得分:0)

您是否只是想将表单存储在会话范围内? 如果是这样,你只需要做 cfset session.formname = form 或使用structcopy函数将表单结构复制到您的会话中。

要清除它,请使用structclear函数。 检查它是否存在使用 cfif structkeyexists(范围,“var”)

H个