Arbeiten mit Formular-Arrays in ColdFusion?

8

Ich habe keine Ahnung, wie ich in ColdFusion 9 damit umgehen soll. Ich habe ein Formular eingereicht (POST) mit Element-Checkboxen, genannt items [].

Wenn ich ein <cfdump var="#form#" /> no-Problem mache, bekomme ich alle Elemente mit den richtigen Namen wie items[] zB:

angezeigt %Vor%

Allerdings führt ein <cfdump var="#form.items[]#" /> zu einem Fehler. Wie greife ich auf die CF9-Feldwerte zu? Irgendwie Schleife durch?

Ich kann nichts mit dem Array machen, um die IDs daraus zu machen? Gedanken? Ich bin etwas ratlos und ColdFusion ist nicht die einfachste Sprache, um Beispiele / Referenzen im Internet zu finden. ;)

Gibt es einen richtigen Weg, damit umzugehen? Ich muss die IDs herausholen, damit ich auf die Zeilen verweisen kann, die im Formular überprüft wurden, damit ich eine Aktion durchführen kann.

Danke!

    
Jakub 27.05.2010, 19:12
quelle

7 Antworten

21

In ColdFusion gibt es kein Formular-Array. Wenn '[]' am Ende steht, wird daraus kein Array. Sie können die Checkbox-Werte aus dem Formularbereich wie folgt aufrufen:

%Vor%

Punkt-Notation funktioniert nicht wegen der '[]' . Siehe: Ссылка

Werte aus Kontrollkästchen sind nur durch Kommas getrennte Werte, das ist eine Liste in ColdFusion

Um es zu durchlaufen, verwenden Sie cfloop list =:

%Vor%

Um eine Liste in ein Array zu konvertieren, verwenden Sie ListToArray () . Es gibt Listenfunktionen wie listGetAt() , aber wenn Sie viel zufälligen Zugriff machen, wäre es schlauer, die Liste zuerst in ein Array zu konvertieren.

  

Gedanken, ich bin irgendwie ratlos und   Coldfusion ist nicht die einfachste Sprache   Beispiele / Referenzen finden Sie auf der   netto;)

Henry 27.05.2010, 19:28
quelle
3

Ich kann Brian Koteks "Form Utils" für Fälle wie diesen wärmstens empfehlen: Ссылка

Ich benutze das in jeder App, die ich erstelle, weil die Arbeit mit Arrays und Strukturen auf der Seite der Formularübergabe dem Arbeiten mit Listen, imo, viel vorzuziehen ist.

    
marc esher 12.03.2012 14:24
quelle
2

Siehe auch die zweite Antwort hier . Es beschreibt, wie Werte aus einem Feld mit mehreren Instanzen in einem Formular als Array abgerufen werden. Ich muss allerdings sagen, dass ich seit vielen Jahren in CFML arbeite, und das habe ich noch selbst gemacht, oder ich sehe es in jeder App, an der ich gearbeitet habe. Ich denke, das ist nur deshalb so, weil das Vermeiden von Kommas sehr viel einfacher ist, aber wenn Sie es nicht so umgehen können oder wollen, ist es möglich.

    
enigment 12.03.2012 14:06
quelle
2

Beachten Sie auch, dass in einer Ajax-Welt, wenn Sie den gesamten Text einer Post-Anfrage anstelle von einzelnen Formularfeldern kodieren, jede beliebige Datenstruktur sein kann, die einfach auf dem Server abgerufen werden kann. Das folgende Snippet zeigt, wie Sie von ColdFusion aus darauf zugreifen können. Ich bin mir nicht sicher über andere Sprachen, aber es ist fast sicher möglich.

Um einen Beitrag wie diesen mit jQuery zu senden, geben Sie JSON.string an, bevor Sie die Daten an jQuery übergeben. hier und hier .

Wenn Sie Ihre eigene Ajax-Anfrage erstellen, wäre die Pointe:

%Vor%

Um auf diese Daten auf der Serverseite zuzugreifen, sucht dieses ColdFusion-Beispiel zunächst nach diesem json-codierten Post-Body, dann nach dem Post mit json-Daten im Formularfeld "input" und dann in einem URL-Feld mit demselben Namen. In allen Fällen werden die resultierenden Daten deserialisiert und dem lokalen var 'input' zugewiesen, das Sie dann in den Anforderungsbereich, 'rc' oder was auch immer Ihr Code erwartet, einfügen können.

%Vor%     
enigment 19.03.2012 10:54
quelle
2

Mit Ihrer Liste, die IDs sind, funktioniert es gut, aber wenn Sie ein Array mit Kommas haben, dann stecken Sie fest.

In diesem Fall können Sie die Java-Methode getParameterValues ​​verwenden.

%Vor%

Damit erhalten Sie ein Standard-CF-Array, das Sie verwenden können.

    
MrSoolmaan 08.03.2016 12:13
quelle
0

Bei ColdFusion 10+, wenn Sie die Einstellung sameformfieldsasarray in Ihrer Application.cfc wie folgt verwenden:

%Vor%

Sie erhalten ein tatsächliches Array von Formularfeldern mit demselben Namen.

ColdFusion 10 Fehlende Feature - Formularfelder und Arrays

    
Henry 14.06.2016 17:00
quelle
0

Ich schlage vor, dass Sie " [] " aus dem Namen entfernen, da Punktnotation wie in einer anderen Antwort erwähnt nicht zulässig ist. Wenn mehr als ein Formularelement das gleiche name -Attribut enthält, verkettet der Browser alle Werte in eine durch Kommas getrennte Zeichenfolge beim Absenden des Formulars. Glücklicherweise hat ColdFusion viele Funktionen, die eine getrennte Zeichenfolge als Liste behandeln. Sie können <cfloop> zusammen mit diesen Funktionen verwenden, um die Liste zu konsumieren.

    
Code-Apprentice 08.09.2017 21:31
quelle

Tags und Links