Domanda

Hey ragazzi, sto avendo un po 'di un problema che fare con nomi di variabile dinamica. Quello che sta accadendo è che ho un CFC che costruisce parte della forma per me utilizzando alcuni dati in una tabella. Poi il cfc invia codice del form di nuovo alla pagina sotto forma di stringa. Beh ho bisogno di assegnare dei valori a questi campi di modulo così la gente non sovrascrivere i dati. Sto tirando i dati nella funzione nel CFC. Così sto cercando di gettare questa variabile dinamica nella stringa e sta rovinare le cose per me. Continuo a ricevere un errore che dice

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

Ecco il codice che sto usando che mi dà l'errore. Non sto troppo sperimentato con la programmazione non ho fatto questo troppo a lungo. Quindi, qualsiasi ingresso sarebbe impressionante.

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

       

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

Quindi, in ogni caso, se potete darmi qualsiasi input o consigli che sarebbe grande. Grazie mille.

Il codice è proprio in fondo qui in basso.

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

Soluzione

Questo sicuramente non funziona, è CFML non è valida:

getListingInformation.#catNameNoSpace#

Valutare è il diavolo, ma è possibile utilizzare la sintassi array stile invece. L'unica avvertenza è che è necessario specificare in modo esplicito la riga dalla quale si desidera il valore a venire (e se la query non ha nessuna riga, questo errore fuori).

getListingInformation[catNameNoSpace][1]

Altri suggerimenti

La risposta di Sixten ha una sintassi si può usare, ma avrete ancora bisogno di guardare fuori per caratteri non validi nei nomi di variabili come risposta altrove. La guida definitiva per le variabili è qui: http: // www. depressedpress.com/Content/Development/ColdFusion/Articles/Variables/Index.cfm , in particolare questa sezione http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/NotationIndexed.cfm

Un po 'diverso, ma potrebbe essere utile a tutti coloro che cercano in questo modo:. È inoltre possibile utilizzare le variabili [ "staticPartOfVariableName # DynamicPartOfVariableName #"]

Bene penso ho capito. Non mi piace molto come ho dovuto farlo comunque.

evaluate("getListingInformation.#catNameNoSpace#")

Ho sentito da qualche parte prima che l'utilizzo di valutare è lento e non molto pulito. C'è una soluzione migliore?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top