Ergebnis 1 bis 12 von 12

Thema: Problem mit Kontaktformular - Erweiterung mit Auswahl von Ansprechpartnern

  1. #1
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard Problem mit Kontaktformular - Erweiterung mit Auswahl von Ansprechpartnern

    Hallo!

    Ich habe ein kleines Problem mit einem erstellten Kontaktformular!

    Ziel:
    - Auswahlmöglichkeit eines Ansprechpartners
    - Weiterleitung der Anfrage per E-Mail an den ausgewählten Ansprechpartner

    Vorgehen:
    - Modulordner kontakt erstellt
    - Callbackfunktion unter config.php im Ordner config registriert
    Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
    
    /**
     * Hookregistrierung - Kontaktformular Ansprechpartner
     */
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('Kontakt', 'processFormData');
    
    ?>
    - Callback-Funktion im Modulordner unter Kontakt.php hinterlegt
    Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
    
    /**
     * Klasse Kontakt
     */
    class Kontakt extends Frontend
    {
    	public function processFormData($arrPost, $arrForm, $arrFiles)
    	{
    		// Das Kontaktformular hat die ID 16
    		if ($arrForm['id'] != 16)
    		{
    			return;
    		}
    
    		// E-Mail vorbereiten
    		$objEmail = new Email();
    		$objEmail->subject = "Neue Kontaktaufnahme";
    		$objEmail->text = "Eine neue Kontaktanfrage ist beim XYZ eingegangen.\n\n";
    
    		// Formulardaten übernehmen
    		foreach ($arrPost as $key=>$value)
    		{
    			$objEmail->text .= "$key: $value\n";
    		}
    
    		// E-Mail abhängig von der Kategorie versenden
    		if ($arrForm['category'] == 'Informationen')
    		{
    			$objEmail->sendTo('informationen@xyz.info');
    		}
    		elseif ($arrForm['category'] == 'Mannschaftskapitaen')
    		{
    			$objEmail->sendTo('mannschaftskapitaen@xyz.info');
    		}
    		elseif ($arrForm['category'] == 'Turniertermine')
    		{
    			$objEmail->sendTo('turniertermine@xyz.info');
    		}		
    		else
    		{
    			$objEmail->sendTo('webmaster@xyz.info');
    		}
    
    	}
    }
    ?>
    - im BE Kontaktformular erstellt mit einem Select-Menü


    Problem:
    Trotz korrekter Werte im Select-Menü und der zuweisung in der Callback-Funktion, wird die Schleife komplett durchlaufen und die Anfrage immer nur an webmaster@xyz.info gesendet.

    Erfolglose Versuche der Problemlösung:
    - E-Mail-Versand auf SMTP umgestellt
    - Änderung der Werte im Select-Menü
    - Änderung der Klassenbezeichnung
    - Änderung des Modulnamens (Ordner)

    Frage:
    Woran kann das noch liegen?

    Quelle:
    Quelle war die Erweiterung eines Formulares aus dem Webconsulting-Beispiel des neuen Handbuches.
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Hi Thomas

    Könntest du denn mal ein print_r() oder var_dump() von $arrPost posten?

    Müsste ja irgendwie am Vergleich liegen...
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    ah jetzt seh ich's...müsste das nicht $arrPost['category'] statt $arrForm['category'] sein?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  4. #4
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Danke Dir.

    Arrrg, das war es!
    Da hab ich ganricht dran gedacht. *grummel

    Danke.
    Geändert von Thomas (20.01.2010 um 09:17 Uhr)
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  5. #5
    Contao-Nutzer
    Registriert seit
    25.09.2009.
    Ort
    Österreich; Wien & Salzburg
    Beiträge
    66

    Standard

    Meine Lösung:

    da 'categories' ein "Array im Array" ist, musst du dieses in einer schleife durchlaufen.

    Meine Lösung:

    PHP-Code:
        public function processFormData($arrPost$arrForm$arrFiles)
        {
            
    // Das Service-Formular hat die ID 4
            
    if ($arrForm['id'] != 4)
            {
                return;
            }

            
    // E-Mail vorbereiten
            
    $objEmail = new Email();
            
    $objEmail->subject "Neue Newsletter-Anmeldung";
            
    $objEmail->from = ("server@xx.at");
            
    $objEmail->replyTo("bundesverband@xx.at");        
            
    $objEmail->text "Eine neue Newsletter-Anmeldung ist eingegangen.\n\n";    
        
    $objEmail->text .= print_r($arrPost,true);
        
    $objEmail->text .= "\n\nDatum Uhrzeit des Versands:".date("H:i:s d.m.Y");
        
        
    $double 0;
           
        for(
    $i=0;$i <= count($arrPost['Newsletter']);$i++)
        {
          if(
    $arrPost['Newsletter'][$i] == 'v_news'
          {
            
    $objEmail->sendCC('xx@xx.at');                                                   
            
    $objEmail->sendTo('xx@xx.at');
            
    $double=1;
          }
          if(
    $arrPost['Newsletter'][$i] == 'v_gnews')
          {
            if(!
    $double
            {
              
    $objEmail->sendCC('xx@xx.at');
              
    $objEmail->sendTo('xx@xx.at');
            }
          }
          if(
    $arrPost['Newsletter'][$i] == 'gb_news'
          {
            
    $objEmail->sendCC('xx@xx.at');                                                   
            
    $objEmail->sendTo('xx.x@xx.at');
          }
          if(
    $arrPost['Newsletter'][$i] == 'oenb_noe'
          {
            
    $objEmail->sendCC('xx@xx.at');                                                   
            
    $objEmail->sendTo('xx@xx.at');
          }
        }
                       
        } 
    Wichtigster Teilbereich:
    PHP-Code:
    for($i=0;$i <= count($arrPost['Newsletter']);$i++)
        { 
    Beste Grüße aus Österreich
    XING: https://www.xing.com/profile/Johannes_Ferner2

  6. #6
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Danke ferni, für den Ansatz!

    Ich habe das zwar schon mit der Änderung der Variablen korrigieren können, aber Deine Version hat mich zusätzlich auf eine Idee gebracht.
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  7. #7
    Contao-Nutzer
    Registriert seit
    22.07.2009.
    Ort
    Sandhausen
    Beiträge
    49

    Standard

    Mit switch ist es noch übersichtlicher

    PHP-Code:
            // E-Mail abhängig von der Kategorie versenden
            
    switch  ($arrPost['category'] ) 
            {
                case 
    'Informationen' :
                    
    $objEmail->sendTo('informationen@xyz.info');
                    break;

                case 
    'Mannschaftskapitaen' :
                    
    $objEmail->sendTo('mannschaftskapitaen@xyz.info');
                    break;

                case 
    'Turniertermine' :
                    
    $objEmail->sendTo('turniertermine@xyz.info');
                    break;

                default :
                    
    $objEmail->sendTo('webmaster@xyz.info');
            } 

  8. #8
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    3

    Standard

    Thomas, oben hast du einen screenshot vom Selectmenue des Kontaktformulars.
    Kannst du auch den Sendbutton (der das processformdata auslöst) des Kontaktformulars posten. Bin neu und möchte ein Bsp. sehen damit ich weiß wie ich das umsetzen muss (der Rest mit dem Modulordner usw. ist mir klar)

    Danke
    Gerald

  9. #9
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Hallo, wettersat!

    Der Hook wird automatisch geladen und abgearbeitet.

    Du mußt lediglich darauf achten, dass der Hook vom richtigen Formular angestoßen wird.

    Das passiert in dieser Zeile:
    Code:
    ...
    // Das Kontaktformular hat die ID 16
    if ($arrForm['id'] != 16)
    ...
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  10. #10
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    3

    Standard

    Wie kann ich feststellen ob der Hook durchlaufen wird? Die ID Abfrage habe ich bereits entfernt aber es tut sich nichts.

    lg
    Gerald

  11. #11
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Wie soll er das denn wissen?
    Die ID benötigt der Hook um auf das richtige Formular zu reagieren, woher soll er sonst wissen, wann er reagieren soll?
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  12. #12
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    3

    Standard

    Der reagiert dann immer. Wenn keine ID angegeben ist dann wird das script immer durchlaufen. Die ID Abfrage ist ja innerhalb der Funktion.

    UPDATE: hat jetzt geklappt. Hookeintrag musste in der localconfig und nicht in der config.php gemacht werden.
    Geändert von wettersat (10.03.2010 um 19:17 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Problem Kontaktformular
    Von torti im Forum Formulare
    Antworten: 8
    Letzter Beitrag: 24.10.2010, 17:08
  2. gelöst: Problem mit Benutzerrechten (Erweiterung: inserttags)
    Von siebenvier im Forum Sonstige Erweiterungen
    Antworten: 6
    Letzter Beitrag: 30.08.2010, 17:49
  3. Antworten: 3
    Letzter Beitrag: 26.03.2010, 15:33
  4. Problem mit TinyMCE Erweiterung!
    Von OneChance im Forum Sonstiges zu Contao
    Antworten: 0
    Letzter Beitrag: 29.12.2009, 10:09
  5. Problem mit der Erweiterung "Teilnahme an einem Termin ?
    Von OneChance im Forum Sonstige Erweiterungen
    Antworten: 12
    Letzter Beitrag: 22.11.2009, 13:54

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •