Laravel ist ein beliebtes PHP-Webanwendungs-Framework, das viele praktische Funktionen zum Entwickeln leistungsstarker, skalierbarer und einfach zu wartender Webanwendungen bietet. Eines der wichtigen Features ist die Middleware, die bestimmte Vorgänge zwischen Anfragen und Antworten durchführen kann. In diesem Artikel besprechen wir, wie man Daten mithilfe von Middleware in Excel-Dateien exportiert.
Zuerst müssen wir eine Laravel-Anwendung erstellen. Sie können mit Composer wie unten gezeigt ein neues Laravel-Projekt erstellen:
$ composer create-project --prefer-dist laravel/laravel myapp
Dadurch wird ein Laravel-Projekt namens myapp erstellt.
In Laravel ist der Controller die Kernkomponente, die HTTP-Anfragen verarbeitet. Wir müssen einen Controller erstellen, der Anfragen zum Datenexport bearbeitet. Erstellen Sie einen Controller mit dem folgenden Befehl:
$ php artisan make:controller ExportController
Dadurch wird ein neuer Controller namens ExportController erstellt. Im Controller müssen wir eine Methode implementieren, um die Exportanforderung zu verarbeiten. In diesem Beispiel verwenden wir die Methode export(), um den Exportvorgang durchzuführen.
Laravel-Middleware kann zusätzliche Verarbeitung bei HTTP-Anfragen hinzufügen. Wir werden eine Middleware namens ExportMiddleware erstellen, um Exportanfragen zu verarbeiten und zu prüfen, ob die Anfrage Daten enthält, die exportiert werden müssen.
Erstellen Sie eine Middleware mit dem folgenden Befehl:
$ php artisan make:middleware ExportMiddleware
Dadurch wird eine neue Middleware namens ExportMiddleware erstellt. In der Middleware müssen wir eine handle()-Methode implementieren, um den Exportvorgang durchzuführen. In diesem Beispiel prüfen wir, ob die Anfrage Daten enthält. Wenn ja, extrahieren wir die Daten aus der Anfrage und exportieren sie mithilfe der Laravel Excel-Bibliothek in eine Excel-Datei.
Laravel Excel ist ein sehr beliebtes Laravel-Erweiterungspaket, das viele praktische Methoden zum Verarbeiten von Excel-Dateien bietet. Sie können Laravel Excel mit dem folgenden Befehl installieren:
$ composer require maatwebsite/excel
Sobald die Installation abgeschlossen ist, müssen Sie den Dienstanbieter und den Alias für Laravel Excel konfigurieren. Öffnen Sie die Datei config/app.php und fügen Sie den folgenden Code zum Provider-Array hinzu:
MaatwebsiteExcelExcelServiceProvider::class,
Fügen Sie den folgenden Code zum Aliases-Array hinzu:
'Excel' => MaatwebsiteExcelFacadesExcel::class,
Jetzt sind wir bereit, den Export zu schreiben Code. In der ExportMiddleware verwenden wir den folgenden Code, um die aus der Anfrage extrahierten Daten in eine Excel-Datei zu exportieren:
use Excel; public function handle($request, Closure $next) { if (!$request->has('data')) { return response()->json([ 'message' => 'No data to export' ], 400); } $data = $request->get('data'); return Excel::download(new ExportData($data), 'data.xlsx'); }
Im Code verwenden wir die Methode Excel::download(), um die Daten in eine Excel-Datei zu exportieren. Diese Methode akzeptiert zwei Parameter: eine Datenexportklasse und den Dateinamen. Die Datenexporterklasse ist eine Klasse, die die FromCollection-Schnittstelle implementiert und zum Exportieren von Datensammlungen in Excel-Dateien verwendet wird.
In diesem Beispiel haben wir eine Datenexportklasse namens ExportData erstellt, um den Datenexport abzuwickeln. Das Folgende ist ein einfaches Beispiel der ExportData-Klasse:
use MaatwebsiteExcelConcernsFromCollection; class ExportData implements FromCollection { protected $data; public function __construct($data) { $this->data = $data; } public function collection() { return collect($this->data); } }
In dieser Klasse verwenden wir die FromCollection-Schnittstelle, um die Datensammlung in eine Excel-Datei zu exportieren. Die Methode „collection()“ gibt eine Datensammlung zurück, die von Laravel Excel in eine Excel-Datei exportiert wird.
Jetzt müssen wir die Middleware in der Laravel-Anwendung registrieren. Öffnen Sie die Datei app/Http/Kernel.php und fügen Sie den folgenden Code zum Array $routeMiddleware hinzu:
'export' => AppHttpMiddlewareExportMiddleware::class,
Zuletzt müssen wir eine Route erstellen, um Exportanfragen zu verarbeiten. Öffnen Sie die Datei „routes/web.php“ und fügen Sie den folgenden Code hinzu:
Route::get('export', 'ExportController@export')->middleware('export');
In dieser Route definieren wir eine GET-Anfrage mit dem Namen „export“ und leiten sie an die export()-Methode des ExportControllers weiter. Hängen Sie auch die Export-Middleware an diese Route an, damit die ExportMiddleware ausgeführt wird, bevor die Anfrage den Controller erreicht
Jetzt haben wir alle notwendigen Arbeiten erledigt. Wir können die Exportanfrage über die folgende URL testen:
http://localhost:8000/export?data=[{"id":1,"name":"John"},{"id":2,"name":"Jane"}]
Wenn die Anfrage erfolgreich ist, erhalten Sie eine Excel-Datei mit dem Namen data.xlsx.
Vollständiges Codebeispiel:
ExportMiddleware.php
<?php namespace AppHttpMiddleware; use Closure; use Excel; use MaatwebsiteExcelConcernsFromCollection; class ExportMiddleware { public function handle($request, Closure $next) { if (!$request->has('data')) { return response()->json([ 'message' => 'No data to export' ], 400); } $data = $request->get('data'); return Excel::download(new ExportData($data), 'data.xlsx'); } } class ExportData implements FromCollection { protected $data; public function __construct($data) { $this->data = $data; } public function collection() { return collect($this->data); } }
ExportController.php
<?php namespace AppHttpControllers; class ExportController extends Controller { public function export() { return response()->json([ 'message' => 'Export completed successfully' ]); } }
routes/web.php
Route::get('export', 'ExportController@export')->middleware('export');
app/Http/Kernel.php
protected $routeMiddleware = [ ... 'export' => AppHttpMiddlewareExportMiddleware::class, ];
Zusammenfassung
In diesem Artikel haben wir gelernt, wie das geht Benutze Laravel Middleware exportiert Daten in eine Excel-Datei. Wir haben eine neue Middleware namens ExportMiddleware erstellt, um Daten mithilfe der Laravel-Excel-Bibliothek in Excel-Dateien zu exportieren, und diese Middleware in der Laravel-Anwendung registriert. Abschließend haben wir unsere Exportanfrage getestet und die exportierte Excel-Datei überprüft. Ich hoffe, dieser Artikel ist hilfreich für den Datenexport mit Laravel.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Middleware für den Datenexport in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!