Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan perisian tengah untuk eksport data dalam Laravel

Cara menggunakan perisian tengah untuk eksport data dalam Laravel

王林
王林asal
2023-11-02 08:29:491386semak imbas

Cara menggunakan perisian tengah untuk eksport data dalam Laravel

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.

  1. Buat aplikasi Laravel

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.

  1. Buat Pengawal

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.

  1. Cipta Middleware

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.

  1. Memasang dan Mengkonfigurasi 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,
  1. Tulis kod eksport

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.

  1. Mendaftar Middleware

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,
  1. Buat laluan

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"}]
    Jika permintaan itu berjaya, anda akan menerima fail Excel bernama data.xlsx.
  1. Contoh kod penuh:

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'
        ]);
    }
}
/web.php 🎜🎜#
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn