2

こんにちは、動的変数名の処理で少し問題が発生しています。何が起こっているのかというと、テーブル内のデータを使用してフォームの一部を構築する 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

4 に答える 4

13

これは確実に機能しません。有効な CFML ではありません。

getListingInformation.#catNameNoSpace#

評価は悪魔ですが、代わりに配列スタイルの構文を使用できます。唯一の注意点は、値を取得する行を明示的に指定する必要があることです (クエリに行がない場合、これはエラーになります)。

getListingInformation[catNameNoSpace][1]
于 2009-11-12T06:18:11.783 に答える
2

Sixten's answer には使用できる構文がありますが、他の場所で回答されているように、変数名の不正な文字に注意する必要があります。変数の究極のガイドはこちら: http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/Index.cfm、特にこのセクションhttp://www.depressedpress.com/Content/Development/ColdFusion /記事/変数/NotationIndexed.cfm

于 2009-11-12T07:55:06.657 に答える
1

少し異なりますが、これを見ている人には役立つかもしれません: Variables["staticPartOfVariableName#DynamicPartOfVariableName#"] も使用できます。

于 2016-06-17T17:25:07.207 に答える
0

わかりました。理解できたと思います。私はそれをどうやってやらなければならなかったのか本当に好きではありません。

evaluate("getListingInformation.#catNameNoSpace#")

その前のどこかで、evaluateの使用は遅く、あまりクリーンではないと聞いたことがあります。より良いオプションはありますか?

于 2009-11-12T06:08:53.893 に答える