我正在尝试在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会更容易,但我认为缺乏资源会让这很困难。我很感激有关如何使这项工作的任何建议。 感谢。
答案 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个