Form API direkter Zugriff auf Results

am 28.04.2014 - 19:57 Uhr in
Guten Abend,
bin aktuell wieder dabei mich mit der Form API in Druapl auseinander zu setzen. Wollte ein Modul zum Rechnen und Auswerten erstellen. Bisher habe ich immer auf die API verzichtet und alles direkt geschrieben, weils teilweise einfacher und schneller für mich war. Mittels Form API habe ich auch diverse Formulare umgesetzt, wo eine einfache Nachricht als Bestätigung ausreichend war. Allerdings benötige ich nun mehrere Ausgabe in meinem Formular, wie Texte, Formlen, Auswertungen, Diagramme etc.
Gibt es hier auch eine Möglichkeit, direkt auf Variablen und Objekte innerhalb des Formular Templates zuzugreifen, ohne das man form rebuilt nutzt und das fertige Markup ins Formular schreibt oder multi step Formulare nutzt? Gibt zwar auch einen recht aktuellen Beitrag, der auch teilweise in die selbe Richtung geht, aber irgendwie doch nicht ganz, daher ein neuer Beitrag. Hoffe dies ist ok.
Viele Grüße
Julsen
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn ic Dich richtig
am 01.05.2014 - 13:59 Uhr
Wenn ic Dich richtig verstehe, möchtest Du auf Eingaben greifen und darstellen, die in eine Form einegegeb wurden aber noch nicht abgespeichert sind?
Denke mal das ist ein klassischer JS Fall?
Du haust in dein Modul ein javascript und kannst dann so ziemlich alles damit machen, noch bevor abgespeichert wird, inkl. Verarbeitung und Ausgabe weiterer Rechenschritte. Nutze ich oft um den Server nicht zu belasten.
Würde gerne die Berechnungen
am 08.05.2014 - 12:29 Uhr
Würde gerne die Berechnungen mit PHP durchführen und dann erst ausgeben. Server hat eigentlich genug Leistung und läuft aktuell nur auf Sparflamme. Bei Javascript liegen ja die Berechnungen offen. Daten sollen auch nicht abgespeichert werden und nur temporär genutzt werden.
Validation handler siehe
am 08.05.2014 - 12:58 Uhr
Validation handler siehe hier:
https://drupal.org/node/717742
das schreit nach AJAX und einem Service
am 08.05.2014 - 13:24 Uhr
Dafür musst du schon etwas "Stricken".
Eine AJAX-Objekt kann natürlich einen Service (getrieben von PHP) rufen, und das Ergebnis anzeigen.
Dann liegen die Berechnungsmodelle im PHP-Service-Modul und können direkt im Formular angezeigt werden.
Drupal liefert dann nur das Grobgerüst.
Danke für die
am 08.05.2014 - 17:56 Uhr
Danke für die Rückmeldungen!
Validation handler siehe hier:
https://drupal.org/node/717742
Den Validation Handler nutze ich ja bereits, aber glaube nicht, dass ich so per Form Template auf meine eigenen Variablen zugreifen kann oder? Das Formular wird beim klick auf berechnen als self abgeschickt. Rechnungen werden durchgeführt und in Variablen und Arrays gepackt. Ausgabe funktioniert über drupal_set_message auch, nur würde ich gerne die Ergebnisse mit dem Form Theme / Template des Moduls gestalten und ausgeben.
Dafür musst du schon etwas "Stricken".
Eine AJAX-Objekt kann natürlich einen Service (getrieben von PHP) rufen, und das Ergebnis anzeigen.
Dann liegen die Berechnungsmodelle im PHP-Service-Modul und können direkt im Formular angezeigt werden.
Drupal liefert dann nur das Grobgerüst.
Würde ich dann so mit den Form Templates arbeiten können?
Wenn über drupal_set_message
am 21.05.2014 - 21:29 Uhr
Wenn über drupal_set_message das gewünschte Ergebnis zu sehen ist, Du sowieso ein eigenes Modul baust, also die Berechnungen und damit einhergehend die richtigen Variablen schon abgegriffen und verarbeitet sind, verstehe ich die Frage nicht.
Eine Ausgabe erfolgt im drupal way über render arrays, oder Du setzt die results in das nachfolgende Formular.
Also ich habe MODUL.module,
am 22.05.2014 - 17:32 Uhr
Also ich habe
MODUL.module, wo ich mittels Form Api mein Formular erstelle und auch wo meine Rechnungen drin ablaufen.
Dann habe ich die Template Datei "MODUL-themer.tpl.php" des Moduls, wo ich die Struktur des Formulars und der Ausgabe festgelegt habe. Jetzt möchte ich aber innerhalb dieser Datei auch die Ausgabe der Rechnungen erledigen. Einfach so auf die meine Variablen und Arrays kann ich leider nicht zugreifen. Gibt es hier eine einfache Möglichkeit oder muss ich irgendwie über das Variable Modul gehen?
jetzt wid es interessant,
am 22.05.2014 - 17:51 Uhr
jetzt wid es interessant, weil ich intelektuell nicht mehr mitkomme.Du hast ein tpl für die Struktur, in der dann sowas steht wir von mir aus
<?php
print $result;
?>
Dann hast Du ein Modul, das dein Formular enthält, nach absenden der Submit von page 1 die post Daten abgreift, dann eine berechnung macht, und diese in eine Variable speichert.
die Du dann als Ergebnis bspw. in einem hidden field der page 2 mitgeben könntest.
Natürlich kannst Du sie auch in eine session variable speichern, oder Du legst eine DB Tabelle für dein Modul an. Dort speicherst Du das dann. Oder du haust in den Variablenspeicher von drupal.
Warum, wenn Du sie schon als variable vorliegen haben musst, kannst Du nicht darauf zugreifen? Wie gibst Du eine variable mit drupal_set_message denn aus wenn Du nicht drauf zugreifen kannst?
Irgendwie habe ich den Eindruck wir reden aneinander vorbei!
Also die TPL Datei ist die
am 22.05.2014 - 18:34 Uhr
Also die TPL Datei ist die von dem Modul.
drupal_set_message kann man ja auch direkt in der Funktion nach dem Rechnen aufrufen, von daher kein Problem.
Das Formular gebe ich per template_preprocess Funktion und als Array an den Themer weiter. Hier kann ich glaube ich auch meine Ergebnisse mit übergeben. Aber leider keine Ahnung wie. Also aktuell scheiterts bei mir daran, dass ich die Ergebnisse nicht dem Template zur Verfügung stellen kann.
Kannst Du mal deine Funktion
am 22.05.2014 - 19:47 Uhr
Kannst Du mal deine Funktion posten? Also das Modul inkl. template. Du kannst ja die Berechnungen rauslassen. Will nur wissen was Du zur Verfügung hast.
Meine Meinung ist, dass Du wenn die Ergebnisse vorliegen, Du diese mittels render array ausgeben könntest.
Mach doch mal Pseudocode. Im Moment hânge ich etwas bei Deiner Darstellung. Ist mir so zu abstrakt. Kann aber auch an mir liegen, dass ich einfach nicht verstehe wo dein Problem liegt.