info@a-coding-project.de

Laravel Middleware: Schritt für Schritt

In Laravel ist es möglich vor die Ausgabe nachträglich zu bearbeiten. Das kann man zum Beispiel für Komprimierungen oder Caching nutzen, aber auch fürs Tracking.

Am einfachsten erstellt man eine Middleware über Artisan:

php artisan make:middleware TrackingMiddleware

Die daraus erstellte Klasse befindet sich unter app/HTTP/Middleware und sieht so aus:

<?php
    namespace App\Http\Middleware;

    use Closure;

    class TrackingMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            return $next($request);
        }
    }

In die Funktion handle kann man nun eigene Aktionen packen.

Die Middleware lässt sich vor oder nach dem Controller aufrufen. Standardmäßig wird es davor ausgeführt, aber die Umstellung ist nicht sehr schwer:

<?php
    namespace App\Http\Middleware;

    use Closure;

    class TrackingMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $res = $next($request);

            //Eigener Code

            return $res;
        }
    }

Der Rest der Seite wird im Closure ausgeführt. Als Ergebnis bekommt man das Response-Objekt, in dem man dann zum Beispiel noch Cookies setzen kann.

Middleware registrieren

Jetzt muss die Middleware noch registriert werden. Das geht über die Datei app/Http/Kernel.php. Darin gibt es die Eigenschaft $middleware, in dem die Klasse dann hinzugefügt werden kann:

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \App\Http\Middleware\MyMiddleware::class,
    ];

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant