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

  • Best Practices for Plain Text Notes
  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 2 Tagen 12 Stunden
  • Guten morgen und Danke
    vor 2 Tagen 18 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 3 Tagen 1 Stunde
  • Danke Schmittrich. Die Frage
    vor 4 Tagen 16 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 4 Tagen 19 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 2 Tagen
  • Vielen Dank für Ihren
    vor 6 Wochen 5 Tagen
  • Composer ist sehr ratsam
    vor 7 Wochen 5 Stunden
  • Vielen Dank für den
    vor 7 Wochen 2 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250324
Registrierte User: 20571

Neue User:

  • alxshell
  • FesObsemo
  • AnthonyhoF

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 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