Как объединить две строки и использовать результат в качестве имени переменной в coldfusion?
У меня есть форма, которая имеет много полей в формате
- Имя ="Поле-1"
- Имя ="Поле-2"
- Имя ="Поле-3"
- Имя ="Поле-4"
- так далее....
На странице действий формы я хотел бы иметь возможность использовать цикл и иметь возможность использовать индекс цикла для согласования со строковым префиксом, подобным этому <cfset newField = "field-" & #index#>
а затем использовать #Variables.newField#
чтобы получить доступ к полю формы на предыдущей странице.
Я играл с Evaluate()
функционировать, но не повезло. Я не очень часто использую ColdFusion, так что, возможно, я немного разбираюсь в синтаксисе.
Пример того, как я использую это:
<cfset newField = "form.field-" & #index#>
<input type="hidden"
name="field-<cfoutput>#index#</cfoutput>"
value="<cfoutput>Evaluate(Variables.newField)</cfoutput>">
2 ответа
Вы не должны использовать оценку вообще для этого случая. Просто получите доступ к структуре переменных по имени ключа.
<cfset newField = "form.field-" & index>
<cfset value = variables[newField]>
или просто
<cfset value = variables["form.field-#index#"]>
или если вы не хотите использовать промежуточную переменную
<cfoutput>#variables["form.field-" & index]#</cfoutput>
Там нет необходимости устанавливать его на variables
объем. В вашем цикле вы можете просто получить доступ к значениям поля формы, используя обозначение ассоциативного массива непосредственно из form
сфера как это:
<input type="hidden" name="field-<cfoutput>#index#</cfoutput>"
value="<cfoutput>#form['field-' & index]#</cfoutput>">
Для дополнительной безопасности было бы целесообразно проверить наличие каждого поля формы, прежде чем пытаться отобразить его:
<cfif structKeyExists(form, 'field-' & index)>
<!--- display field --->
</cfif>