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

[gelöst] Formular, das die Ergebnisse auf der selben Seite anzeigt

Eingetragen von tdemuth (24)
am 16.08.2009 - 11:37 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hi,

ich habe ein kleines Formular, mit dem eine Liste von Nodes nach bestimmten Kriterien gefiltert werden kann. Die gefilterte Liste soll unter dem "Filterformular" angezeigt werden, damit der Benutzer schnell andere Filtereinstellungen wählen kann, wenn ihm das Ergebnis nicht passt. Ich hatte ursprünglich gedacht, dass ich das Formular einfach auf den eigenen Pfad umleite und dabei die Ids der Ergebnisnodes übergebe - aber wie?

Ich habe die Funktionen

- my_page, die die Seite mit dem Formular, bzw Formular und Ergebnisse rendern soll;
- my_page_form, die das Formular erstellt;
- my_page_form_validate, die ein bißchen validiert;
- my_page_form_submit, die die Ergebnisliste berechnet.

In my_page_form_submit habe ich $form_state['redirect'] = array('my/page', array('nodes => '1,2,3,4')) geschrieben, weil ich gesehen habe, das man das in der Formulardefinition wohl darf, um Parameter per GET zu übergeben. In Form-State darf man es anscheinend nicht, es passiert nämlich nix.

Wie also gehe ich diese Sache an?

mpG
Tobias

‹ Nodes ohne view-Berechtigung ausblenden Grundsätzliches: Eigenes Modul mit Bilderupload ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Schau dir drupal_goto an

Eingetragen von traxer (1009)
am 16.08.2009 - 21:14 Uhr

Du musst die Parameter, die an drupal_goto übergeben werden sollen, in ein Array packen und an $form_state['redirect'] zuweisen:

<?php
$form_state
['redirect'] = array(
 
// Parameter $path:
 
'my/page',
 
// Parameter $query:
 
urlencode('nodes=1,2,3,4,5'),
);
?>

Das ganze funktioniert, weil drupal_redirect_form die Funktion drupal_goto per call_user_func_array aufruft falls $form_state['redirect'] ein Array ist.

Du könntest natürlich auch die Session verwenden. Dazu muss dein Submit Handler

  1. eine ID erzeugen
  2. die empfangenen Daten oder die errechneten Daten unter Verwendung der ID in der Session speichern
  3. auf eine Seite weiterleiten, der die ID übergeben wird (natürlich nicht als Query String sondern als callback argument in hook_menu()).

Besagte Seite könnte sich dann anhand der ID die gesendeten Daten bzw die errechneten Daten aus der Session holen und die Liste zusammenbauen.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_goto

Eingetragen von tdemuth (24)
am 16.08.2009 - 20:49 Uhr

drupal_goto habe ich mir schon angesehen, daher rührte ja die Idee, dass ich ein Array übergeben könnte. Ich kann es gerade nicht testen, aber wahrscheinlich habe ich was anderes verkehrt gemacht ... Aber die Session zu benutzen ist sowieso ein cleverer Plan als GET, gerade, weil die Ergebnisliste sehr groß werden kann.

Vielen Dank,
Tobias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok, ich habe es jetzt getestet

Eingetragen von tdemuth (24)
am 17.08.2009 - 13:03 Uhr

Ok, ich habe es jetzt testen können. Wichtig sind folgende Dinge:

1. Die Formulardefinition und der Formularzustand, der an die Submit-Funktion übergeben wird, muß als Referenz übergeben werden. (Eigentlich logisch, kann man aber leicht übersehen.)
2. Man kann GET-Parameter mit $form_state['redirect'] = array($path, urlencode("parametername=parameterwert"); übergeben. Die andere Möglichkeit von drupal_goto(), den zweiten Wert als ein Array ("parametername" => "parameterwert") zu übergeben, habe ich bislang nicht ans laufen gekriegt.
3. Ausgaben während der Formularverarbeitung (etwa zu Testzwecken) stören den normalen Programmablauf und führen mitunter zu merkwürdigen, nicht direkt als Fehler erkennbaren Problemen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • wmtbpo361x
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Rollen
    vor 4 Tagen 12 Stunden
  • Inzwischen sind wir bei
    vor 2 Wochen 1 Tag
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Wochen 1 Tag
  • melde mich mal wieder, da ich
    vor 9 Wochen 6 Tagen
  • Hey danke
    vor 9 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 10 Wochen 14 Stunden
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 2 Tagen
  • In der entsprechenden View
    vor 11 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250238
Registrierte User: 20467

Neue User:

  • LorisBen
  • StevenEness
  • ocvk2810

» 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 28 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