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 回答