Seite 2 von 2 ErsteErste 12
Ergebnis 41 bis 50 von 50

Thema: PostDownload Hook benutzen

  1. #41
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    PHP-Code:
    class DownloadResponseListener
    {
        public function 
    __construct(
            private 
    readonly string $projectDir,
            private 
    readonly string $uploadPath,
        ) {
            
        }

    PHP-Code:
    # config/services.yaml
    services:
        
    _defaults:
            
    autowiretrue
            autoconfigure
    true
            bind
    :
                
    $projectDir'%kernel.project_dir%'
                
    $uploadPath'%contao.upload_path%'

        
    App\:
            
    resource: ../src 
    Irgendwie bekomm ich das so nciht zum Laufen, bekomme immer den Fehler:
    Code:
    Cannot autowire service "App\EventListener\DownloadResponseListener": argument "$projectDir" of method "__construct()" is type-hinted "string", you should configure its value explicitly.
    muss ich die services.yaml noch irgendwo spezifisch einbinden oder so?

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

    Standard

    Poste deinen PHP Code und deine services.yaml
    » sponsor me via GitHub or PayPal or Revolut

  3. #43
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste deinen PHP Code und deine services.yaml
    Ich war einfach dämlich....

    Ich hab die services.yaml in 'contao/config/' gepackt statt in 'config'....

    Ist mir gerade aufgefallen und nach dem Verschieben geht's.. Es wird Zeit für's Wochenende

  4. #44
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Frage favicon.ico request wird auch gezählt

    Hab den Hook bei mir auch umgebaut als DownloadResponseListener.
    Funktioniert super.

    Bis auch eine witzige Kleinigkeit.
    Wenn der Browser das in der Startseite defininierte Favicon anfordert, wird das auch als BinaryFileResponse durchgeführt, wodurch ich diesen "Download" nun zähle.
    Das will ich natürlich nicht, und ich Frage mich grad was da noch alles nebenbei gezählt werden könnte.

    Kann ich das verhindern, ohne jetzt explizit favicon.ico und das was in der Startseite als solches eingetragen, ist zu filtern?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #45
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Hab das mal grob protokolliert, eventuell könnte ich nach der Seiten-ID=0 filtern.
    Bildschirmfoto vom 2023-12-11 02-06-32.png
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #46
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Jo, funktioniert.
    Code:
    if (!$pageModel instanceof PageModel) {
      return;
    }
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Was genau meinst du damit? Ich denke wenn dann musst du den Datei Pfad prüfen.
    » sponsor me via GitHub or PayPal or Revolut

  8. #48
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Wenn der Browser ein "GET /favicon.ico" anfordert, ist das auch ein "BinaryFileResponse".
    Den Zugriff auf die ico will ich aber gar nicht zählen, ist ja kein Download über ein Download(s) Element.

    Nach Datei Name kann ich nicht gehen, den bekomme ich zwar, aber ob das nun per Klick oder über andere Wege kam, sehe ich ja darüber nicht.
    Bei einen echten Download bekomme ich eine Page ID (also ein PageModel) und somit ist es ein echter Download.

    Daher:
    Code:
    $pageModel = $event->getRequest()->attributes->get('pageModel');
    if (!$pageModel instanceof PageModel) {
     return;
    }
    Das funktioniert bei mir, zumindest taucht nun das favicon.ico nicht mehr auf in der Download Zählung.

    Weiter oben meintest du ja, man muss das filtern:
    Darüberhinaus ein early out einbauen für den Fall, dass der Dateipfad nicht mit dem Parameter contao.upload_path beginnt ("files").
    Das wäre die Alternative, über Pfad zu gehen und mit contao.upload_path zu vergleichen.

    Ich habs nun über das PageModel gemacht, habe ich mir abgeschaut, eigentlich wollte ich prüfen ob PageModel->id = 0 ist, ist es in so einem Fall, aber das war dann schon ein Schritt zu weit.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Bei einen echten Download bekomme ich eine Page ID (also ein PageModel) und somit ist es ein echter Download.
    Nur über das Download(s) Inhaltselement. Und auch nur über das alte, oder?
    » sponsor me via GitHub or PayPal or Revolut

  10. #50
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Wenn Contao 5.2 die neuen mitbringt, dann bei den neuen Inhaltselementen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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
  •