문제

I have a form which has many fields in the format of

  • name="field-1"
  • name="field-2"
  • name="field-3"
  • name="field-4"
  • etc....

On the form action page, I would like to be able to use a loop and be able to use the index of the loop to concat with a string prefix like this <cfset newField = "field-" & #index#> and then use the #Variables.newField# to access the form field on the previous page.

I've been playing around with the Evaluate() function, but no luck. I don't use ColdFusion much, so I may just be a little off on the syntax.

An example of how I am using it is:

<cfset newField = "form.field-" & #index#>
<input type="hidden" 
      name="field-<cfoutput>#index#</cfoutput>" 
      value="<cfoutput>Evaluate(Variables.newField)</cfoutput>">
도움이 되었습니까?

해결책

You don't have to use evaluate at all for this case. Just access the variables struct by key name.

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

or just

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

or if you don't want to use an intermediary variable

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

다른 팁

There's no need to set it to the variables scope. Within your loop, you can simply access the form field values using associative array notation directly from the form scope like this:

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

For extra safety, it would be wise to check for the existence of each form field before trying to display it:

<cfif structKeyExists(form, 'field-' & index)>
    <!--- display field --->
</cfif>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top