Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Daten des Formulars auf der selben Seite anzeigen

Eingetragen von axelf (110)
am 30.11.2009 - 17:34 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hi,

Ich möchte die abgeschickten Daten aus dem Formular auf der selben Seite wieder anzeigen, d.h. im Template mymodule_results.tpl.php soll mir der Inhalt des Formulars angezeigt werden.

Wie kann ich nun in mymodule_page unterscheiden, ob das Formular abgeschickt wurde oder nicht und wie bekomme ich dann die Daten dort hinein?

in meinem Modul gibt es diese u.a. diese Funktionen:

function mymodule_page($form){
           
    $output = theme('mymodule', 'test');
    $output .= theme('mymodule_results', 'test');
    return $output;
}

/**
* Implementation of hook_theme
*/
function mymodule_theme(){
      return array(
        'mymodule' => array(
           'template' => 'mymodule',
            'arguments' => array('dbData' => NULL, 'results' => NULL),
       ),
        'mymodule_results' => array(
            'template' => 'mymodule_results',
            'arguments' => array('results' => NULL),
       ),
      
   );

}

function mymodule_form(){
  // Formular
}

‹ eigenes upload Formular "http error 0" Wiederverwnedung von Funktionalitäten ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe jetzt mal folgende

Eingetragen von axelf (110)
am 30.11.2009 - 18:00 Uhr

Ich habe jetzt mal folgende Lösung. Wenn jemand noch was besseres kennt dann immer her damit.

function mymodule_form(){

if (!empty($form_state['post'])){

        $results = 'Anzeige der Ergebnisse';

    }else{

        $results = 'Formular noch nicht abgeschickt';

    }

    $form['results'] = array(

        '#type' => 'item',
        '#value' => theme('mymodule_results', $results),

    );

}

dafür habe ich in der mymodule_page den aufruf von $output .= theme('mymodule_results', 'test'); enfternt und noch eine zusätzliche preprocess funktion für das zweite template eingebaut.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich mache für so etwas eine

Eingetragen von wla (9461)
am 30.11.2009 - 19:45 Uhr

Ich mache für so etwas eine eigene Submit Funktion, die ich an den Submit Button hänge.

$form['edit'] = array(
      '#type' => 'submit',
      '#value' => t('Save'),
      '#submit' => array('myform_submit'),
)

In dieser Funktion setze ich dann:
$form_state['rebuild'] = TRUE;

Dann wird nach der Submit-Funktion wieder die Form-aufbauende Funktion aufgerufen. Dort kann ich dann mit den gesendeten Daten eine geänderte Form aufbauen. Das kann man solange treiben, bis entweder über einen weiteren Button oder ein Abruchkriterium diese Form endgültig verlassen wird.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, danke für den Tip.

Eingetragen von axelf (110)
am 01.12.2009 - 10:21 Uhr

Hi,

danke für den Tip. Funktioniert es bei dir auch, das du unter dem Formular die Daten anzeigst? Mir ist nich ganz klar was du meist "mit den gesendeten Daten eine geänderte Forn aufbauen". Das Formular ansich bleibt ja unverändert.
Ich habe bei mir ein extra Template angelegt, das unter dem Formular die gesendeten Daten anzeigen soll (später kommt dann noch eine DB-Abfrage hinzu)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn ich eine Form mittels

Eingetragen von wla (9461)
am 01.12.2009 - 11:09 Uhr

Wenn ich eine Form mittels PHP selbst aufbaue, bestimme ich doch in der Funktion, die diese Form erzeugt, wie es aussehen soll. Dann kann ich auch nicht nur die Input-Felder sondern auch Formelemente vom Typ HTML ausgeben (= einfachen Text). Du kannst die Resultate der Eingabe in der Variablen $form_state['values'] finden und in $form_state['storage'] kannst Du Werte zwischen Deiner Submit-Funktion und der Formerzeugung hin und her schieben. Ob Du nun die Textfelder über oder unter den Eingabefeldern zeigts liegt doch vollkommen bei Dir. Allerdings ist das dann alles PHP-Programmierung.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, wie erstelle ich denn

Eingetragen von axelf (110)
am 01.12.2009 - 16:14 Uhr

Hi,

wie erstelle ich denn ein Formularelement vom Typ HTML? Meinst du '#markup'?
Bei mir ist $form_state['storage'] immer leer.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sorry, hatte es nicht

Eingetragen von wla (9461)
am 01.12.2009 - 16:34 Uhr

Sorry, hatte es nicht nachgesehen, ja, der Typ ist markup. Klar ist $form_state['storage'] leer, aber da kannst Du eigene Information reinpacken (ich habe da mal ne Liste von Nodes geparkt). Wichtig ist, daß dieses Element erhalten bleibt zwischen den einzelnen Funktions-Aufrufen und Du in der Submit-Funktion diese Infos somit nutzen kannst. Das mußt Du einfach probieren.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, dein Tip klappt sehr

Eingetragen von axelf (110)
am 02.12.2009 - 15:45 Uhr

Hi,

dein Tip klappt sehr gut, nur habe ich festgestellt, dass nach dem rebuild die Werte nicht beibehalten werden (z.b. bei mir wird die Selectbox wieder zurückkesetzt). Mit meiner Methode bleiben die ausgewählten Werte auch nach dem abschicken automatisch erhalten

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann mußt Du für die

Eingetragen von wla (9461)
am 02.12.2009 - 16:13 Uhr

Dann mußt Du für die Selectbox den default richtig setzen sprich auf $form_state['values']['name deiner box']. Sieh Dir mal die Struktur von $form_state an. Ich habe für solche Zwecke eine kleine Funktion, die mir die Werte in eine Datei schreibt. Dann kann ich das in Ruhe auswerten.

function wla_logging($text) {
  $fp = fopen("/tmp/wla_log", "a+");
  chmod ("/tmp/wla_log", 0777); // importand to read and clean with an editor
  fputs($fp, $text, strlen($text));
  fclose($fp);
}

die rufe ich dann auf mit
  wla_logging("Form State Array :\n" . print_r($form_state, true));

Damit habe ich die Info unter /tmp in der Datei wla_log. Das geht auch mit <pre> print_r... </pre> aber ich habe das lieber in einer Datei. Ist halt persönliche Note :-).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, jetzt ist doch noch ne

Eingetragen von axelf (110)
am 04.12.2009 - 17:32 Uhr

Hi,

jetzt ist doch noch ne Frage aufgetaucht. Ich erzeuge per Ajax ein Dropdown, d.h. ich wähle im ersten etwas aus und im zweiten Dropdown dann die dazugehörigen Werte.
Wenn ich das Formular abgeschickt habe, dann kommt immmer eine Meldung "Es wurde eine nicht erlaubte Auswahl entdeckt" und das Dropdown ist leer, obwohl ich schaue

if (!empty($form_state['values']))

und dann das Dropdown fülle. Irgendwie verliere ich zwischendurch die Daten, die ich vorher mit ajax erzeugt habe. Du hattest ja was von $form_state['storage'] geschrieben. Wie bekomme ich denn die Werte dort rein? Evtl. klappts ja dann. Läuft das über die _submit funktion?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 20 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 17 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 15 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association