2

角括弧表記を使用して動的変数を参照しようとしています。(アプリケーションについて疑問がある場合は、クエリによって作成された一連の製品をループし、それぞれに固有のSKUに関連付けられたフィールドを作成しています)

このコードのチャンクに絞り込んだので、実行しようとすると「無効な式」エラーがスローされます。

<cfif FORM["QTY_" & SKU] NEQ ''>
    <div class="sopQty"><input type="number" min="0" name="QTY_#SKU#" value = "#FORM['QTY_' & SKU]#" /></div>
<cfelse>
    <div class="sopQty"><input type="number" name="QTY_#SKU#" /></div>
</cfif>

目標は、前のページの値がある場合はそれを渡し、そうでない場合はフィールドを空白のままにすることです。この場合、私が理解できなかった構文の癖があると思います。以下のブロックのエラー:

タイプ:テンプレート

メッセージ:無効な式

タグ:CFIF

位置線=62; 列=17

詳細不正な表現[#FORM['QTY_'&SKU])#]

ソース

60:                 <div class="sopSearch"><p>#SearchAlias#</p></div> 
61:                 <div class="sopPrice"><p>#ISBNupc#</p></div>
62:                  <cfif FORM["QTY_" & SKU] NEQ ''>
63:                     <div class="sopQty"><input type="number" min="0" name="QTY_#SKU#" value = "#FORM['QTY_' & SKU])#" /></div>
64:         <cfelse>

^基盤となるCFMLソースからのスニペット

助言がありますか?

4

2 に答える 2

3

変数をどこに設定しているかわからないため、これは単なる例ですが、アクションページで次のようなことを試してください。

<cfset SKU = "123">
<cfset dynamic_Var = "QTY_" & variables.SKU>
<cfif IsDefined("form[dynamic_Var]")>
  <cfoutput>#form[dynamic_Var]#</cfoutput>
<cfelse>
  fail
</cfif>

送信フォームは次のとおりです。

<form name="test" action="test.cfm">
    <input type="text" name="QTY_123" value="test">
    <input type="submit" name="submit" value="submit">
</form>
于 2012-09-14T14:17:02.033 に答える
0

以下も可能です(キーが定義されていなくてもエラーは発生しません)。

<cfset key = "QTY_" & sku/>
<cfif structKeyExists(form, key) && len(form[key])>
  <!--- do something --->
</cfif>
于 2012-09-18T18:51:36.163 に答える