Neue Seite aus Formular-Daten erstellen
am 12.08.2010 - 13:41 Uhr in
Ich stehe gerade vor einem Problem und irgendwie fällt mir keine ganz passende Lösung ein :(
Ich möchte dem Benutzer ein Formular geben, dort kann er dann verschiedene Dinge auswählen, eingeben etc.
Wenn er dann auf den Submit-Button klickt, sollen die eingegebenen Daten in der Submit-Funktion verarbeitet werden und anschließend soll der User eine neue Seite bekommen, deren Inhalt ich in der Submit-Funktion auf Basis der eingegebenen Daten erstellt habe, optimal wäre es, wenn diese neue Seite unter einem bestimmten Pfad angezeigt würde.
Also, Beispiel:
Der User bekommt ein Formular, dort kann er z.B. verschiedene Personen anwählen und Text eingeben.
Nun soll er auf den Submit-Button klicken und dann erscheint eine neue Seite (wenn möglich unter dem Pfad "example.com/meinpfad"), auf der angezeigt wird:
"Hallo Benutzer,
Du hast die folgenden Personen gewählt: <-- Benutzernamen -->
Außerdem hast du folgendes eingegeben: <-- Eingabe -->"
Das Beispiel ist natürlich unsinnig, ich weiß, mir geht's nur darum, wie ich in der Submit-Funktion die Daten auswerten kann und dann auf einer neuen Seite den von mir erstellten Seiten-Inhalt auf Basis der eingegebenen Daten ausgeben kann (also nicht mehr das ursprüngliche Formular oder so, sondern eben nur diesen erstellten Inhalt).
Ich könnte zwar über '#redirect' oder drupal_goto() zu einem gewünschten Pfad weiterleiten (z.B. einen Pfad, den ich in hook_menu eingetragen habe), aber ich habe keine Ahnung, wie ich dort dann an die Daten des Formulars kommen soll :(
Meine Idee war jetzt, in der Submit-Funktion die Daten auszuwerten und mit einem eindeutigen Index in einer Temp-Tabelle zu speichern.
Dann mittels '#redirect' oder drupal_goto() einen Pfad aufrufen (den ich in hook_menu eingetragen habe) und dort als page argument den Index der eingetragenen Daten übergeben. Dann kann ich in der page-callback-funktion den Index auslesen und mir damit die nötigen Daten aus der Temp-Tabelle holen.
Aber gibt es nicht auch evtl. einen eleganteren Weg? Stehe ich vielleicht gerade nur total auf'm Schlauch?
- Anmelden oder Registrieren um Kommentare zu schreiben
Hat echt niemand eine Idee,
am 15.08.2010 - 11:58 Uhr
Hat echt niemand eine Idee, wie man das machen könnte?
Das geht am einfachsten über
am 15.08.2010 - 13:16 Uhr
Das geht am einfachsten über ein Multistep-Formular. Nach dem Submit der ersten Seite baust Du das Formulat neu auf. Das kann auch mehrfach durchlaufen werden und wenn alle Infos, die Du möchtest, da sind, machst Du ein node_save für Deinen Node.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Das bringt mich leider nicht
am 15.08.2010 - 19:31 Uhr
Das bringt mich leider nicht wirklich weiter.
Ich habe ja alle Informationen, die ich benötige, auf dem einen Formular. Also, mal ganz konkret ein Anwendungsfall:
Ich möchte, dass bestimmte Rollen Datenblätter zu den Benutzern der Website angezeigen lassen können.
Daher möchte ich ein Formular machen, dort kann der Anwender dann auswählen, welche Infos auf dem Datenblatt ausgegeben werden, dann wählt er noch aus, für welche Benutzer dieses Datenblatt ausgegeben werden soll und sendet das Formular ab.
In der Submit-Funktion möchte ich aus diesen Informationen nun die Datenblätter zusammenstellen und diese sollen dann alle als Seiteninhalt angezeigt werden. Also kein Formular mehr und nichts, einfach nur eine ganz normale Seite mit den zusammengestellten Datenblättern. Quasi als ob man einen Node anzeigen lässt, nur dass eben kein Node, sondern die Datenblätter angezeigt werden.
Da bringt mir ein Multistep-Formular leider nichts, zumindest kann ich nicht erkenne, wie ich das damit umsetzen könnte :(
Und node_save bringt mir da auch nichts, ich will die Datenblätter ja nicht speichern. Ich möchte sie lediglich ausgeben, damit man sie drucken kann.
Mit hook_menu einen Pfad
am 15.08.2010 - 23:00 Uhr
Mit hook_menu einen Pfad registrieren, an dem Du eine entsprechende Funktion hinterlegst, die den Seitenaufbau für Dein Datenblatt darstellt. In der Submit-Funktion mit drupal_goto auf diesen Pfad weiterleiten, dann hast Du Deine Anzeige. Falls Du Parameter brauchst, könnstest Du die in einer Sessionvariablen ablegen. Habe ich jetzt was übersehen?
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Nein, hast nichts übersehen
am 15.08.2010 - 23:17 Uhr
Nein, hast nichts übersehen ;-)
Sowas ähnliches hatte ich mir auch schon überlegt, allerdings mit Datenbank-Temp-Tabelle, nicht mit Sessionvariable (welche wahrscheinlich besser geeignet wäre).
Gut, dann schau ich mich jetzt mal nach Sessionvariablen um und dann teste ich das mal aus.
Vielen Dank =)