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

Webform - E-Mail-Empfänger über form_alter ändern

Eingetragen von SteffenR@drupal.org (2262)
am 23.06.2009 - 09:34 Uhr in
  • Module
  • Drupal 6.x

Ich habe auf einer Seite eine Webform, die wie folgt aufgerufen wird http://www.seite.de/kontakt?id=43 - über die GET-Variable id wird eine NodeId übergeben, die dann über ein kleines Modul ausgewertet wird.

http://pastebin.com/m6a78f94

<?php
function wfalter_form_alter(&$form, $form_state, $form_id)  {
    if (
$form_id == 'webform_client_form_31') {
        if(
is_numeric($_GET['id'])  ) {
           
//drupal_set_message(print_r($form));
            // Kontakt-Adresse auslesen
               
$emailadr = getContactMail($_GET['id']);
                if(
$emailadr!="") {
                   
$form['#parameters'][2]->webform['email'] = $emailadr;
                   
watchdog("info","mail sending to ".$emailadr);
                }
            }

  }
    return
$form;

}

/*
* E-Mail-Adresse auslesen vom Inhaltstyp Mitarbeiter
*/
function getContactMail($nid) {
   
$email_result = db_query('SELECT field_email_value FROM {content_type_mitarbeiter} WHERE nid = %d', $nid);
   
$ar_mail = db_fetch_array($email_result);
    return
$ar_mail['field_email_value'];
}
?>

Wie am Code zu erkennen ist, wird einfach die der der hook form_alter verwendet um die Mailadresse des Mitarbeiters auszulesen.
Die Ausgabe im WatchDog liefert auch die korrekten Ergebnisse. Nur funktioniert das Überschreiben der WebForm Paramater über
$form['#parameters'][2]->webform['email'] = $emailadr; nicht - hier die Variable $emailadr enthält die korrekten Werte..

Was mach ich hier falsch ?
Oder ist mein Ansatz über den Hook form_alter falsch gewählt ?

Gruß,
SteffenR

‹ Taxonomie-Mehrfachauswahl begrenzen Forum: "Anmelden, um in dem Forum einen neuen Beitrag zu schreiben." ausblenden ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_nodeapi

Eingetragen von stBorchert (6003)
am 23.06.2009 - 10:18 Uhr

Moin.
Wie bereits gerade im IRC erwähnt, kannst Du die Empfängeradresse(n) nicht über hook_form_alter verändern. Diese werden nämlich direkt aus der Webform-Node geladen (in webform_client_form_submit).
Dementsprechend dürfte hook_nodeapi in Verbindung mit $op == 'load' weiterhelfen (in einem eigenen Modul).

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank noch mal für

Eingetragen von SteffenR@drupal.org (2262)
am 25.06.2009 - 06:55 Uhr

Vielen Dank noch mal für deine Hilfe..
Da ich direkt die Mailadresse überschreiben wollte, an die das Formular gehen sollte, habe ich den Empfänger wie folgt überschrieben:

<?php
 
function modulename_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
    switch (
$op) {
        case
"load":
            if(
$node->nid==31 && $node->type=="webform") {
               
$node->webform['email']  = "mail@domain.de";
            }
        break;
    }
}
?>

Für feste Werte passt diese Lösung - wenn man nun aber die Werte dynamisch ausliest, werden diese durch die Verarbeitung in der Webform wieder durch den Standardwerte überschrieben..
Hab das gerad mit derhasi im #drupal.de diskutiert. Scheint wohl ein Webform Bug zu sein.

Eine mögliche Lösung
Um das Problem nun doch zu lösen, werd ich mir ein kleines Modul basteln, mit dem ich das ja doch recht einfache Formular nachbilde - hier kann ich dann auf einfache Art die $_GET Variablen im hook_submit bearbeiten..

<?php
function modulename_kontakt_form_submit($form, &$form_state) {
   
$params = $form_state['values']; // Übergabewerte auslesen
   
$from = $mailfrom;
   
$emailadr =  _modulename_getMailAdress($get_id);
   
   
// call mail function and send email
      
drupal_mail('callback_block', 'notice',$emailadr , "de", $params,$from);
      
drupal_set_message(t('Vielen Dank f&uuml;r Ihre Nachricht. Wir werden uns in K&uuml;rze bei Ihnen melden.'));
   
$form_state['redirect'] = '';
}
?>

  • 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 8 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • 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 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 5 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 32 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