Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: Formular an externe url, aber ohne Danke Seite!

  1. #1
    Alter Contao-Hase Avatar von xkoy
    Registriert seit
    23.07.2010.
    Ort
    Mount Maunganui, New Zealand
    Beiträge
    1.035

    Standard Formular an externe url, aber ohne Danke Seite!

    Servus,

    jetzt hab ich noch ein kleines problem.
    PHP-Code:
    <form<?php if ($this->action): ?> action="https://EXTERNER SERVICE"<?php endif; ?> id="<?= $this->formId ?>" method="<?= $this->method ?>" enctype="<?= $this->enctype ?>"<?= $this->attributes ?><?= $this->novalidate ?>>
    Jetzt habe ich jedoch keine Weiterleitung mehr auf meine Danke Seite. Gibts da irgend eine Lösung?

    Danke
    Dani

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Man kann vielleicht das Formular auf eine interne Seite führen.
    Diese Seite hat dann den Seitentyp "Externe Weiterleitung".

    Spannend ist, ob da POST-Variablen mitgehen, bei GET ist es sicherlich kein Problem.

  3. #3
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    Hi Dani,

    dein Betrefff ist etwas konfus :-).

    Zu deiner Frage: Ein Modul ist mir nicht bekannt aber du kannst das mit dem Form-Hook "processFormData" lösen.

    PHP-Code:
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('\Guave\Example\Classes\Hooks''sendDataToExternUrl'); 
    PHP-Code:
    <?php 
    namespace Guave\Example\Classes

    class 
    Hooks 
        
    /**
         * @param array $arrSubmitted
         * @param array $arrData
         * @param array $arrFiles
         * @param array $arrLabels
         * @param \Form $from
         */
        
    public function sendDataToExternUrl($arrSubmitted$arrData$arrFiles$arrLabels$form)
        {

            
    //prüfen ob es deine Form mit dem Alias extern_form ist?
            
    if($form->alias != 'extern_form') {
                return;
            }

            
    //Daten per CURL an externe url senden
            
    $externUrl 'http://example.com';
            
    $this->post($arrSubmitted$externUrl);
            
            
    //nun auf die seite Weiterleiten die in der Form hinterlegt wurde
            
    if ($form->jumpTo)
            {
                
    $page = \PageModel::findOneBy('id'$form->jumpTo);
                
    $redirect = \Controller::generateFrontendUrl($page->row());
                \
    Controller::redirect(ampersand($redirect));
            } else {
                \
    Controller::redirect(ampersand(\Environment::get('base')));
            }


        }

        
    /**
         * @param array $fields
         * @param string $url
         */
        
    protected function post($fields$url)
        {
            
    $ch curl_init();
            
    $postvars '';
            foreach (
    $fields as $key => $value) {
                
    $postvars .= $key "=" urlencode($value) . "&";
            }
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_POST1);                //0 for a get request
            
    curl_setopt($chCURLOPT_POSTFIELDS$postvars);
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_CONNECTTIMEOUT3);
            
    curl_setopt($chCURLOPT_TIMEOUT20);
            
    $response curl_exec($ch);
            
    curl_close($ch);

            return 
    $response;

        }
    }

    Habe den Code schnell zusammenkopiert, ist nicht getestet, sollte aber so gehen.

    lg
    Gebi

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin Dani,

    kannst bitte nochmal genau erklären, was du haben möchtest?

    Gruß, Cliff

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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