2013-04-02 1 views
5

У меня есть форма, которая имеет множество полей в форматеКак конкатрировать две строки и использовать результат в качестве имени переменной в coldfusion?

  • имя = "Поле-1"
  • имя = "Поле-2"
  • имя = "Поле-3"
  • Name = «поле-4»
  • и т.д ....

на странице формы действий, я хотел бы быть в состоянии использовать цикл и быть в состоянии использовать индекс цикла для Concat с строка префикс <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>"> 
+0

Он просто выводит форму. поле-1, form.field-2 и так далее. Мне нужно значение, хранящееся в form.field-1, а не текст «form.field-1». –

ответ

8

Вы не должны использовать оценку вообще для этого случая. Просто войдите в переменную struct по имени ключа.

<cfset newField = "form.field-" & index> 
<cfset value = variables[newField]> 

или просто

<cfset value = variables["form.field-#index#"]> 

или если вы не хотите использовать промежуточную переменную

<cfoutput>#variables["form.field-" & index]#</cfoutput> 
+0

Bingo, мне просто пришлось изменить его на ''. Большое вам спасибо, и я должен подождать еще 5 минут, прежде чем я смогу дать вам кредит, но я это сделаю. :-). –

+0

Awesome. Очевидно, что он работает с любым объектом struct - я просто использовал структуры, которые вы упомянули/использовали в вопросе. –

4

Там нет необходимости устанавливать его в variables области. В вашем цикле, вы можете просто получить доступ к значениям полой формы, используя ассоциативное обозначение массива непосредственно из form сферы, как это:

<input type="hidden" name="field-<cfoutput>#index#</cfoutput>" 
value="<cfoutput>#form['field-' & index]#</cfoutput>"> 

Для дополнительной безопасности, было бы целесообразно, чтобы проверить наличие каждого поля формы, прежде чем пытаться для его отображения:

<cfif structKeyExists(form, 'field-' & index)> 
    <!--- display field ---> 
</cfif>