2 Stimmen

Dynamische Variablennamen Coldfusion

Hey Leute, ich habe ein kleines Problem beim Umgang mit dynamischen Variablennamen. Was passiert ist, dass ich eine CFC habe, die einen Teil eines Formulars für mich erstellt, indem sie einige Daten in einer Tabelle verwendet. Dann sendet die CFC den Code des Formulars als Zeichenkette zurück auf die Seite. Nun muss ich Werte diesen Formularfeldern zuweisen, damit die Leute die Daten nicht überschreiben. Ich ziehe die Daten in der Funktion in der CFC ab. Also versuche ich, diese dynamische Variable in die Zeichenkette einzufügen, und das macht mir Probleme. Ich bekomme immer einen Fehler, der besagt

Ein CFML-Variablenname kann nicht mit einem "." enden.

Hier ist der Code, den ich benutze, der mir den Fehler gibt. Ich bin nicht allzu erfahren im Programmieren, ich mache das noch nicht so lange. Also wäre JEDE Eingabe großartig.

             Select * from listings
                where listingID = #arguments.listingID#

                    ">

Also, wenn du mir irgendwelche Eingaben oder Ratschläge geben kannst, wäre das toll. Vielen Dank.

Der Code ist hier unten am Ende.

                    ">

13voto

Sixten Otto Punkte 14771

Dies funktioniert definitiv nicht, es ist kein gültiges CFML:

getListingInformation.#catNameNoSpace#

Auswerten ist der Teufel, aber Sie können stattdessen die Array-Syntax verwenden. Der einzige Haken ist, dass Sie explizit angeben müssen, aus welcher Zeile der Wert kommen soll (und wenn die Abfrage keine Zeilen hat, wird dies einen Fehler verursachen).

getListingInformation[catNameNoSpace][1]

2voto

Antony Punkte 3771

Die Antwort von Sixten hat eine Syntax, die du verwenden kannst, aber du musst immer noch auf ungültige Zeichen in Variablennamen achten, wie an anderer Stelle beantwortet. Der ultimative Leitfaden für Variablen ist hier: http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/Index.cfm, insbesondere dieser Abschnitt http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/NotationIndexed.cfm

1voto

Patrick Schomburg Punkte 2348

Etwas anders, aber könnte für alle hilfreich sein, die sich das ansehen: Sie können auch Variables["staticPartOfVariableName#DynamicPartOfVariableName#"] verwenden.

0voto

NCX001 Punkte 117

Alles klar, ich glaube, ich habe es herausgefunden. Mir gefällt jedoch nicht wirklich, wie ich es machen musste.

evaluate("getListingInformation.#catNameNoSpace#")

Irgendwo habe ich gehört, dass die Verwendung von evaluate langsam und nicht sehr sauber ist. Gibt es eine bessere Option?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X