netsells/csvme

一个有观点的库,可以使得导出CSV格式的数据变得极其简单。

1.1.0 2018-09-17 14:36 UTC

This package is auto-updated.

Last update: 2024-08-28 13:54:15 UTC


README

Latest Version Software License Total Downloads

Csvme是一个有观点的库,利用了league/csv库。

它是由Netsells团队创建和维护的

安装

使用Composer安装Csvme

$ composer require netsells/csvme

用法

基本用法

Csvme始终期望一个对象数组,并且可选地提供一个用于标题行的布局闭包。

$csv = new Csvme();

$csv->withHeader(['ID', 'Total', 'Number of Items', 'Created At'])
    ->withLayout(function(Order $order) {
        return [
            $order->id,
            $order->total,
            $order->items->count(),
            $order->created_at->format('d-m-Y'),
        ];
    })
    ->withItems($orders)
    ->output();

CSV 编译器

可以使用外部类将CSV的布局卸载到专门的文件中。

$csv = new Csvme();
$csv->output(new OrderExportComposer($orders));
<?php

use Netsells\Csvme\Csvme;
use Netsells\Csvme\CsvComposer;

class OrderExportComposer implements CsvComposer
{
    /**
     * The orders.
     *
     * @var array
     */
    protected $orders;

    /**
     * Create a new csv composer.
     *
     * @param  array  $orders
     * @return void
     */
    public function __construct($orders)
    {
        $this->orders = $orders;
    }

    /**
     * Configure the CSV
     *
     * @param  Csvme  $csv
     * @return void
     */
    public function compose(Csvme $csv)
    {
        $csv->withHeader(['ID', 'Total', 'Number of Items', 'Created At'])
            ->withLayout(function(Order $order) {
                return [
                    $order->id,
                    $order->total,
                    $order->items->count(),
                    $order->created_at->format('d-m-Y'),
                ];
            })
            ->withItems($this->orders);
    }

}

CORS头

当在API端点中使用Csvme时,您可以使用setCorsHeader()方法添加Access-Control-Allow-Origin头。该方法默认允许所有来源,但可以通过以下方式传递特定的来源作为参数。

$csv = new Csvme();

$csv->withHeader(['ID', 'Total', 'Number of Items', 'Created At'])
    ->withLayout(function(Order $order) {
        return [
            $order->id,
            $order->total,
            $order->items->count(),
            $order->created_at->format('d-m-Y'),
        ];
    })
    ->withItems($orders)
    ->setCorsHeader('https://test.com')
    ->output();