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, ];
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project