2009-11-12 122 views
2

嘿,夥計們,我有一個關於動態變量名稱的問題。正在發生的事情是我有一個CFC,它使用表中的一些數據爲我構建了一部分表單。然後,cfc將表單的代碼作爲字符串發送回頁面。那麼我需要爲這些表單域賦值,以免人們覆蓋數據。我正在拉動cfc中的函數中的數據。所以我試圖把這個動態變量放到字符串中,它爲我搞亂了一些東西。我不斷收到一個錯誤說動態變量名稱Coldfusion

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 />"> 

回答

13

這肯定是行不通的,這不是有效的CFML:

getListingInformation.#catNameNoSpace# 

評估是魔鬼,但你可以使用數組風格的語法來代替。唯一需要注意的是,您需要明確指定您想要的值的行(如果查詢沒有行,則會出錯)。

getListingInformation[catNameNoSpace][1] 
+0

這很好,不得不改變我的網頁上的其他一些東西,但我對它更加開心。非常感謝! – NCX001 2009-11-15 19:36:45

0

好吧我想我想通了。雖然我不太喜歡我該怎麼做。

evaluate("getListingInformation.#catNameNoSpace#") 

我之前聽說過使用評估速度慢,不太乾淨。有更好的選擇嗎?

+3

我建議避免像瘟疫一樣評估()。有更好的方法來做同樣的事情,請參閱@Sixten Otto的答案。 – Tomalak 2009-11-12 09:21:22

0

略有不同,但可能是任何人都希望在這個有用:您還可以使用變量[「staticPartOfVariableName#DynamicPartOfVariableName#」。

+0

是的。如果你搜索「coldfusion動態變量名稱」的檔案,這個問題出現..很多;-)例如:[動態變量命名和參考(ColdFusion)](http://stackoverflow.com/questions/18410726/dynamic -variable命名和 - 參考的ColdFusion)。 – Leigh 2016-06-17 17:41:19