Ergebnis 1 bis 6 von 6

Thema: Eigene Extension: Formulardaten onsubmit verändern

  1. #1
    Contao-Nutzer Avatar von borkee
    Registriert seit
    25.09.2015.
    Beiträge
    11

    Frage Eigene Extension: Formulardaten onsubmit verändern

    Hallo Zusammen,

    Ich möchte beim abschicken eines Formulars im Backend die Geokoordinaten einer Adresse in meine Datenbank eintragen.

    So gehe ich bisher vor:

    DCA:
    PHP-Code:
    // Config
        
    'config' => array
        (
            
    'dataContainer'               => 'Table',
            
    'enableVersioning'            => true,
            
    'onsubmit_callback'             => array(array('tl_qfOM_generateLatLong''generateLatLong')),
            
    'sql' => array
            (
                
    'keys' => array
                (
                    
    'id' => 'primary',
                    
    'published' => 'index'
                
    )
            ),
        ), 
    PHP-Code:
    class tl_qfOM_generateLatLong extends Backend 
    {         
        public function 
    generateLatLong($varValueDataContainer $dc)
        {
                   
    // Get lat and long by address         
            
    $address $this->Input->post('lage_strasse')." ".$this->Input->post('lage_hausnummer').", ".$this->Input->post('lage_stadt');
            
    $prepAddr str_replace(' ','+',$address);
            
    $geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false');
            
    $outputjson_decode($geocode);
            
    $lat $output->results[0]->geometry->location->lat;
            
    $long $output->results[0]->geometry->location->lng;
            
            
            
    /// Update the database
            
    $thisID $this->Session->get('CURRENT'); 
            
    $thisID $thisID['IDS'][0];
            
            
    $this->Database->prepare("
                                        UPDATE tl_qfOM_objekte 
                                        SET 
                                            lage_lat='"
    $lat."', 
                                            lage_long='"
    .$long."'
                                            
                                        WHERE id=?
                                    "
    )
                ->
    execute($thisID);            
        }
        

    Leider aktualisiert er mir die Datenbank nicht - der Google-Jason ist aber einwandfrei.

    Wo muss ich ansetzten, gibt es alternativen zu onsubmit_callback?
    save_callback habe ich versucht -> jedoch wurde mir dann entweder lage_lat oder lage_long in der Datenbank aktualisiert, nie beide gleichzeitig.

    Vielen Dank!

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

    Support Contao

    Standard

    Probiere mal mit `$dc->id` .

    Gruß, Cliff

  3. #3
    Contao-Nutzer Avatar von borkee
    Registriert seit
    25.09.2015.
    Beiträge
    11

    Standard

    Hi Cliff,

    ich habe $thisID = $this->Session->get('CURRENT'); $thisID = $thisID['IDS'][0]; mit $dc->id ersetzt (da habe ich wohl voll daneben gegriffen $dc->id scheint mir definitiv besser ) aber leider werden die Werte immer noch nicht in die Datenbank eingetragen.

    Wenn ich eine feste ID vergebe geht es allerdings...

    PHP-Code:
    $this->Database->prepare("
                                        UPDATE tl_qfOM_objekte 
                                        SET 
                                            lage_lat='"
    $lat."', 
                                            lage_long='"
    .$long."'
                                            
                                        WHERE id='5'
                                    "
    )
                ->
    execute($dc->id); 
    Er findet also den Datensatz nur wenn ich die ID (5) fest vergebe, nicht wenn ich sie per $dc->id zuweisen will?

  4. #4
    Contao-Nutzer Avatar von borkee
    Registriert seit
    25.09.2015.
    Beiträge
    11

    Standard

    Habe den Fehler gefunden -> hätte ich gleich drauf kommen können:

    PHP-Code:
    ->execute($this->Input->get('id')) 

    PHP-Code:
    class tl_qfOM_generateLatLong extends Backend 
    {         
        public function 
    generateLatLong($varValueDataContainer $dc)
        {
             
    // Get lat and long by address         
            
    $address $this->Input->post('lage_strasse')." ".$this->Input->post('lage_hausnummer').", ".$this->Input->post('lage_stadt');
            
    $prepAddr str_replace(' ','+',$address);
            
    $geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false');
            
    $outputjson_decode($geocode);
            
    $lat $output->results[0]->geometry->location->lat;
            
    $long $output->results[0]->geometry->location->lng;
                
                    
            
    $this->Database->prepare("
                                        UPDATE tl_qfOM_objekte 
                                        SET 
                                            lage_lat='"
    $lat."', 
                                            lage_long='"
    .$long."'
                                            
                                        WHERE id=?
                                    "
    )->execute($this->Input->get('id'));
            
                        
        }
        


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

    Support Contao

    Standard

    Das wird nur bei einem neuen Datensatz nicht klappen, weil es noch keinen GET Parameter für die id gibt.

  6. #6
    Contao-Nutzer
    Registriert seit
    03.09.2009.
    Ort
    Baunatal
    Beiträge
    122
    Partner-ID
    6087

    Standard

    Wird nicht bei dem onsubmit Callback als erste Variable der DataContainer übergeben?

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
  •