Laravel ialah rangka kerja aplikasi web PHP yang popular yang menyediakan banyak ciri mudah untuk membangunkan aplikasi web berprestasi tinggi, berskala dan mudah diselenggara. Salah satu ciri penting ialah perisian tengah, yang boleh melakukan operasi tertentu antara permintaan dan respons. Dalam artikel ini, kami akan membincangkan cara mengeksport data ke fail Excel menggunakan perisian tengah.
Pertama, kita perlu mencipta aplikasi Laravel. Anda boleh mencipta projek Laravel baharu menggunakan komposer seperti ini:
$ composer create-project --prefer-dist laravel/laravel myapp
Ini akan mencipta projek Laravel yang dipanggil myapp.
Dalam Laravel, pengawal ialah komponen teras yang mengendalikan permintaan HTTP. Kita perlu mencipta pengawal untuk mengendalikan permintaan untuk mengeksport data. Cipta pengawal menggunakan arahan berikut:
$ php artisan make:controller ExportController
Ini akan mencipta pengawal baharu yang dipanggil ExportController. Dalam pengawal, kita perlu melaksanakan kaedah untuk mengendalikan permintaan eksport. Dalam contoh ini, kami akan menggunakan kaedah eksport() untuk melaksanakan operasi eksport.
Laravel middleware boleh menambah pemprosesan tambahan semasa permintaan HTTP. Kami akan mencipta perisian tengah yang dipanggil ExportMiddleware untuk mengendalikan permintaan eksport dan menyemak sama ada permintaan itu mengandungi data yang perlu dieksport.
Buat perisian tengah menggunakan arahan berikut:
$ php artisan make:middleware ExportMiddleware
Ini akan mencipta perisian tengah baharu yang dipanggil ExportMiddleware. Dalam middleware, kita perlu melaksanakan kaedah handle() untuk melaksanakan operasi eksport. Dalam contoh ini, kami akan menyemak sama ada permintaan mengandungi data dan jika ya, ekstrak data daripada permintaan dan eksport ke fail Excel menggunakan perpustakaan Laravel Excel.
Laravel Excel ialah pakej sambungan Laravel yang sangat popular yang menyediakan banyak kaedah mudah untuk bekerja dengan dokumen Excel. Anda boleh memasang Laravel Excel menggunakan arahan berikut:
$ composer require maatwebsite/excel
Selepas pemasangan selesai, anda perlu mengkonfigurasi pembekal perkhidmatan dan alias untuk Laravel Excel. Buka fail config/app.php dan tambahkan kod berikut pada tatasusunan penyedia:
MaatwebsiteExcelExcelServiceProvider::class,
Tambahkan kod berikut pada tatasusunan alias:
'Excel' => MaatwebsiteExcelFacadesExcel::class,
Kini, kami bersedia untuk menulis kod eksport. Dalam ExportMiddleware, kami akan menggunakan kod berikut untuk mengeksport data yang diekstrak daripada permintaan ke fail Excel:
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'); }
Dalam kod, kami akan menggunakan kaedah Excel::download() untuk mengeksport data kepada dokumen Excel. Kaedah ini menerima dua parameter: kelas pengeksport data dan nama fail. Kelas pengeksport data ialah kelas yang melaksanakan antara muka FromCollection dan digunakan untuk mengeksport koleksi data ke fail Excel.
Dalam contoh ini, kami mencipta kelas pengeksport data yang dipanggil ExportData untuk mengendalikan eksport data. Berikut ialah contoh mudah kelas ExportData:
use MaatwebsiteExcelConcernsFromCollection; class ExportData implements FromCollection { protected $data; public function __construct($data) { $this->data = $data; } public function collection() { return collect($this->data); } }
Dalam kelas ini, kami menggunakan antara muka FromCollection untuk mengeksport pengumpulan data ke dalam fail Excel. Kaedah collection() mengembalikan koleksi data yang akan dieksport oleh Laravel Excel ke fail Excel.
Kini, kita perlu mendaftarkan middleware ke dalam aplikasi Laravel. Buka fail app/Http/Kernel.php dan tambahkan kod berikut pada tatasusunan $routeMiddleware:
'export' => AppHttpMiddlewareExportMiddleware::class,
Akhirnya, Kita perlu membuat laluan untuk mengendalikan permintaan eksport. Buka fail route/web.php dan tambahkan kod berikut padanya:
Route::get('export', 'ExportController@export')->middleware('export');
Dalam laluan ini, kami mentakrifkan permintaan GET bernama eksport dan halakannya ke kaedah eksport( )ExportController. Lampirkan juga eksport middleware ke laluan ini supaya ExportMiddleware dilaksanakan sebelum permintaan mencapai pengawal Semua kerja yang diperlukan. Kami boleh menguji permintaan eksport menggunakan URL berikut:
http://localhost:8000/export?data=[{"id":1,"name":"John"},{"id":2,"name":"Jane"}]
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' ]); } }
Route::get('export', 'ExportController@export')->middleware('export');
app/Http/Kernel.php
protected $routeMiddleware = [ ... 'export' => AppHttpMiddlewareExportMiddleware::class, ];
Ringkasan
Dalam artikel ini, kami mempelajari cara mengeksport data ke dokumen pertengahan Laravel. Kami mencipta perisian tengah baharu yang dipanggil ExportMiddleware untuk mengeksport data ke fail Excel menggunakan perpustakaan Laravel Excel dan mendaftarkan perisian tengah ini dalam aplikasi Laravel. Akhirnya, kami menguji permintaan eksport kami dan memeriksa fail Excel yang dieksport. Saya harap artikel ini berguna untuk eksport data menggunakan Laravel.
Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk eksport data dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!