动态变量命名Coldfusion

时间:2009-11-12 04:46:46

标签: dynamic variables coldfusion cfc

嘿伙计们,我在处理动态变量名称时遇到了一些问题。发生的事情是我有一个CFC,它使用表中的一些数据为我构建表单的一部分。然后cfc将表单的代码作为字符串发送回页面。我需要为这些表单字段赋值,以便人们不会覆盖数据。我在cfc中的函数中提取数据。所以我试图将这个动态变量抛入字符串中,这对我来说很糟糕。我一直收到错误说

A CFML variable name cannot end with a "." character.

这是我正在使用的代码,它给了我错误。我对编程没有太多经验我没有这么做太久。所以任何输入都会很棒。

<!--- ================================================================== --->

       

            <cfargument name="catFormQuery" type="query" required="yes">
            <cfargument name="listingID" required="yes">

            <cfset var getListingInformation = "">
            <cfset var returnVar = "">
            <cfset var fieldValue = "">
            <cfset var catNameNoSpace = "">

            <!--- get the listing Information --->
            <cfquery name="getListingInformation" datasource="backEndDSN">
             Select * from listings
                where listingID = #arguments.listingID#
            </cfquery>

<cfoutput query="arguments.catFormQuery">
             <!---====================--->
                <!--- Set catNameNoSpace --->
             <!---====================--->

                <cfset catNameNoSpace = replaceNoCase(arguments.catFormQuery.catName, " ", "_")>

 <!---==========--->
 <!--- for text --->
                <!---==========--->
                <cfif arguments.catFormQuery.catType eq 'text'>
                    <cfset returnVar = returnVar & #arguments.catFormQuery.catName# & ":&nbsp;&nbsp;<input type='text' name='#catNameNoSpace#' value=" & getListingInformation.#catNameNoSpace# & "><br />">
                </cfif>

所以,无论如何,如果你能给我任何意义重大的意见或建议。非常感谢。

代码就在底部。

                    <cfset returnVar = returnVar & #arguments.catFormQuery.catName# & ":&nbsp;&nbsp;<input type='text' name='#catNameNoSpace#' value=" & getListingInformation.#catNameNoSpace# & "><br />">

4 个答案:

答案 0 :(得分:13)

这肯定不起作用,它不是有效的CFML:

getListingInformation.#catNameNoSpace#

Evaluate是魔鬼,但您可以使用数组样式语法。唯一需要注意的是,您需要明确指定要从中获取值的行(如果查询没有行,则会出错)。

getListingInformation[catNameNoSpace][1]

答案 1 :(得分:2)

Sixten的答案有一个你可以使用的语法,但你仍然需要注意变量名中的非法字符,如其他地方所述。变量的最终指南如下:http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/Index.cfm,尤其是此部分http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/NotationIndexed.cfm

答案 2 :(得分:1)

稍微不同但对看这个的人可能有用:你也可以使用变量[&#34; staticPartOfVariableName#DynamicPartOfVariableName#&#34;]。

答案 3 :(得分:0)

好吧我想我明白了。我不喜欢我不得不这样做。

evaluate("getListingInformation.#catNameNoSpace#")

我之前听说过使用评估很慢而且不是很干净。有更好的选择吗?