Ergebnis 1 bis 7 von 7

Thema: Hook wird nicht (mehr!) aufgerufen

  1. #1
    Contao-Nutzer
    Registriert seit
    17.09.2010.
    Beiträge
    188

    Standard Hook wird nicht (mehr!) aufgerufen

    Hallo, zusammen,

    ich habe auf einer Website einen merkwürdigen Effekt: Ein Hook wird nicht aufgerufen. Monatelang wurde er - jetzt nicht mehr. Und ich habe m.E. nichts am (sehr übersichtlichen) Code geändert:

    Setzen des Hooks:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_partner'] = [
       
    'config' => [
          
    'dataContainer' => DC_Table::class ,
          
    'switchToEdit' => true ,
          
    'sql' => [
             
    'keys' => ['id' => 'primary'] ,
             
    'engine' => 'InnoDB'
          
    ] ,
          
    'onsubmit_callback' => [
             [
    'tl_partner' 'createPartnerFile']
          ]
       ] 
    Entsprechende Funktion:

    PHP-Code:
    public function createPartnerFile()
       {
          
    $myLines = array();
          
    $connection System::getContainer()->get'database_connection' );
          
    $rows $connection->fetchAllAssociative"SELECT * FROM tl_partner" );
          foreach ( 
    $rows as $iRow )
          {
             
    $bildFile = \Contao\FilesModel::findById$iRow['image'] );
             if ( 
    $bildFile != null )
                
    $bildURL Environment::get'base' ) . $bildFile->path;
             else
                
    $bildURL "";
             
    $myLines[] = [
                
    'Name' => $iRow['name'] ,
                
    'Info' => $iRow['anschrift'] ,
                
    'WWW' => $iRow['url'] ,
                
    'Email' => $iRow['email'] ,
                
    'Position' => $iRow['position'] ,
                
    'Bild' => $bildURL ,
                
    'Status' => $iRow['status']];
          };
          
    $filename "files/intern/partner.json";
          
    file_put_contents$filename json_encode$myLines JSON_PRETTY_PRINT ) );
       } 
    Als die Datei "partner.json" nicht (mehr) entstand dachte ich zuerst an irgendwelche Datei-Probleme (Rechte, Pfad etc.) aber dann habe ich als erste Zeile in der Funktion mal testweise "die ('???')" eingesetzt und Contao lief ganz normal weiter. Also wird offensichtlich der Hook nicht aufgerufen.

    Hat jemand eine Idee, wo es klemmen könnte?

    Vielen Dank im Voraus!

  2. #2
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.463
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von DampfHans Beitrag anzeigen
    Also wird offensichtlich der Hook nicht aufgerufen.
    so offensichtlich ist das für mich nicht...

    ich würde mal den Debugmodus einschalten und Deinen Code mit der Zeile

    PHP-Code:
    public function createPartnerFile()
       {
    dd('Moin!');
          
    $myLines = array(); 
    ... 
    ergänzen - erscheint ein "Moin!"? Wenn ja, kannst du hier weiter mit dd oder dump weiter suchen...

  3. #3
    Contao-Nutzer
    Registriert seit
    17.09.2010.
    Beiträge
    188

    Standard

    Vielen Dank für den Tipp - der zu einer Art Erfolg führte.

    Zuerst einmal: Ich habe den dd-Aufruf eingebaut, Debug eingeschaltet - und es lief! Wohl gemerkt: Ich habe ansonsten nichts geändert. Also habe ich dd wieder rausgenommen, Debug ausgeschaltet - und es lief nicht mehr!

    Die Situation ist jetzt also: Debug-Modus eingeschaltet: Alles funktioniert, Debug-Modus ausgeschaltet: Der Hook wird nicht mehr ausgeführt. (die sonstigen Aufrufe in der Funktion -DB und file_put_contents- halte ich für "unverdächtig")

    Woran kann das liegen? Verhält sich vielleicht irgendein Cache im Debug anders?

    Vielen Dank!

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

    Support Contao

    Standard

    Das dd-Kommando zeigt ja nur, ob der Hook aufgerufen wird. Ob dann der folgende Code einen Effekt hat, wird dadurch nicht getestet.
    Bist Du Dir sicher, dass der Hook außerhalb des Debug nicht aufgerufen wird?

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    3.063

    Standard

    Zitat Zitat von DampfHans Beitrag anzeigen
    Woran kann das liegen? Verhält sich vielleicht irgendein Cache im Debug anders?
    Ja.

    Ich gehe davon aus, daß Deine Änderungen in einer DCA Datei stehen. Also muss (für den nicht Debug Modus) der Cache neu aufgebaut werden. (Contao Manager: Systemwartung -> Prod.-Cache erneuern).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.089
    Partner-ID
    10107

    Standard

    Poste außerdem mal den gesamten Code.
    » sponsor me via GitHub or Revolut

  7. #7
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.463
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von DampfHans Beitrag anzeigen
    Debug eingeschaltet - und es lief!
    => Cache leeren könnte schon helfen...

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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