调用名称中带变量的变量 - coldfusion?

时间:2012-09-14 13:41:07

标签: coldfusion bluedragon

尝试使用方括号表示法来引用动态变量。 (我正在循环查询创建的一组产品,如果您对应用程序感到疑惑,则为每个与其唯一SKU相关的字段创建字段)

我已将其缩小到这段代码,当我尝试运行它时会抛出“Invalid Expression”错误。

<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_'&amp; 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源的片段

有什么建议吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

下面也是可能的(如果未定义密钥,则不会导致错误。)

<cfset key = "QTY_" & sku/>
<cfif structKeyExists(form, key) && len(form[key])>
  <!--- do something --->
</cfif>