Ergebnis 1 bis 7 von 7

Thema: Verwendung von EventSubscriber

  1. #1
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard Verwendung von EventSubscriber

    Hallo zusammen,

    ich habe gelesen, dass die globale Variable TL_MODE ab Contao 5.0 nicht mehr zur Verfügung stehen soll und wollte eine CSS-Datei wie in folgender Anleitung beschrieben ins Backend einfügen.

    https://docs.contao.org/dev/guides/a...ck-end-assets/

    src/EventSubscriber/KernelRequestSubscriber.php
    PHP-Code:
    <?php

    namespace App\EventSubscriber;

    use 
    Contao\CoreBundle\Routing\ScopeMatcher;
    use 
    Symfony\Component\EventDispatcher\EventSubscriberInterface;
    use 
    Symfony\Component\HttpKernel\Event\RequestEvent;
    use 
    Symfony\Component\HttpKernel\KernelEvents;

    class 
    KernelRequestSubscriber implements EventSubscriberInterface
    {
        protected 
    $scopeMatcher;

        public function 
    __construct(ScopeMatcher $scopeMatcher)
        {
            
    $this->scopeMatcher $scopeMatcher;
        }

        public static function 
    getSubscribedEvents()
        {
            return [
    KernelEvents::REQUEST => 'onKernelRequest'];
        }

        public function 
    onKernelRequest(RequestEvent $e): void
        
    {
            
    $request $e->getRequest();

            if (
    $this->scopeMatcher->isBackendRequest($request)) {
                
    $GLOBALS['TL_CSS'][] = 'bundles/lokalomat/backend.css|static';
            }
        }
    }
    Leider reicht das bloße Anlegen der Datei nicht aus. Zumindest taucht die CSS-Datei noch nicht im Backend auf. Muss hier die src/Resources/config/services.yml noch ergänzt werden?

    Dank und Gruß
    Dennis

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

    Standard

    Sollte so funktionieren, unter der Voraussetzung, dass du entweder

    • den Debug-Modus benutzt
    • und composer dump-autoload/update/install ohne -o/--optimize-autoloader zuvor ausgeführt hattest,

    oder

    • danach ein composer install ausgeführt hast (egal ob mit oder ohne -o)


    Stimmt der CSS Pfad überhaupt? Die CSS Datei scheint laut deinem Code ja von einem Bundle zu kommen - dein Code ist aber für eine Applikationsanpassung.

  3. #3
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Ok, dann wird das der Grund sein. Ich habe das Ganze als Bundle angelegt. Bei der Ausspielung über die config.php hat auch soweit alles funktioniert.

    Bekommt man den Event mit einfachen Mitteln für das Bundle umgebaut? Ich bin in Symfony leider noch immer nicht besonders fit.

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

    Standard

    Zitat Zitat von chatjack Beitrag anzeigen
    Bekommt man den Event mit einfachen Mitteln für das Bundle umgebaut? Ich bin in Symfony leider noch immer nicht besonders fit.
    In deinem Bundle bleibt alles gleich - du musst natürlich den Namespace anpassen und dafür sorgen, dass der Service korrekt registriert ist. In Contao 4.9 musst du letzteres nicht unbedingt machen, weil Contao automatisch alle Klassen im App\ Namespace als Service registriert.

  5. #5
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Ok, wie man die Klasse korrekt registriert habe ich leider noch nicht herausgefunden. Mit dem Namespace App wurde sie scheinbar nicht automatisch registriert und Versuche, das Ganze über die services.yml zu registrieren hat leider auch noch nicht funktioniert. Nach Anpassen des Namespaces habe ich es wie folgt versucht.

    Code:
        BohnMedia\LokalomatBundle\EventSubscriber\KernelRequestSubscriber:
            arguments:
            - '@contao.routing.scope_matcher'

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

    Standard

    Zitat Zitat von chatjack Beitrag anzeigen
    Mit dem Namespace App wurde sie scheinbar nicht automatisch registriert
    Das passiert natürlich nur für den App\ Namespace - welcher sich by default im src/ Ordner deiner Contao Installation befindet. Wenn du eine Extension programmierst (also ein contao-bundle), musst du die Services natürlich selbst registrieren, wie gesagt.



    Zitat Zitat von chatjack Beitrag anzeigen
    und Versuche, das Ganze über die services.yml zu registrieren hat leider auch noch nicht funktioniert. Nach Anpassen des Namespaces habe ich es wie folgt versucht.

    Code:
        BohnMedia\LokalomatBundle\EventSubscriber\KernelRequestSubscriber:
            arguments:
            - '@contao.routing.scope_matcher'
    Genau, das sollte passen. Du musst allerdings noch autoconfigure aktivieren - und die Einrückungen stimmen auch noch nicht.

  7. #7
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Vielen Dank! Hat funktioniert.

    Code:
        BohnMedia\LokalomatBundle\EventSubscriber\KernelRequestSubscriber:
            autoconfigure: true
            arguments:
                - '@contao.routing.scope_matcher'

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
  •