0

我正在尝试在 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 会更容易,但我认为缺乏资源使这变得困难。我将不胜感激有关如何使其正常工作的任何建议。谢谢。

4

3 回答 3

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') />

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

于 2012-04-13T12:40:34.393 回答
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 曾经有超过一个原始值,我认为你最终会得到一个循环引用。仍然..我认为以上是您可能正在尝试的。

于 2012-04-13T15:32:35.950 回答
0

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

要清除它,请使用 structclear 函数。检查它是否存在使用 cfif structkeyexists(scope, "var")

Hth

于 2012-04-13T13:56:26.807 回答