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") を使用します

H番目

于 2012-04-13T13:56:26.807 に答える