rishadblack/wire-reports

使用 WireReports 在 Laravel 中创建响应式、实时报告视图。由 Livewire 驱动,此软件包允许轻松导出到 PDF、Excel 或打印,简化您的报告流程。

1.0.4 2024-09-29 09:29 UTC

This package is auto-updated.

Last update: 2024-10-02 15:05:22 UTC


README

WireReports 是一个 Laravel 软件包,旨在简化动态 Livewire 报告组件的创建。它包括将报告导出到 PDF 和 Excel 格式的功能,并提供了生成和管理报告组件的简便方法,包括自定义视图和数据构建器。

特性

  • 使用单个命令创建 Livewire 报告组件
  • 使用 SnappyPdf 或 mPDF 将报告导出到 PDF
  • 使用 Maatwebsite\Excel 将报告导出到 Excel
  • 可自定义的报告视图
  • 支持组件和视图的分层文件夹结构

安装

要安装此软件包,您可以使用 Composer

composer require rishadblack/wire-reports

发布占位符

要发布软件包占位符以进行自定义,请运行

php artisan vendor:publish --provider="Rishadblack\WireReports\WireReportsServiceProvider" --tag="wire-reports-stubs"

用法

创建报告组件

您可以使用 Artisan 命令创建新的 Livewire 报告组件

php artisan make:wire-reports {name}

{name} 参数应为组件的名称。您可以使用点符号表示法包含子文件夹(例如,Demo.Test)。示例

要创建位于 Demo 文件夹中的名为 TestReport 的报告组件

php artisan make:wire-reports Demo.Test

这将创建

A Livewire component file at app/Livewire/Reports/Demo/TestReport.php
A Blade view file at resources/views/livewire/reports/demo/test-report.blade.php

删除报告组件

您可以使用 Artisan 命令删除现有的 Livewire 报告组件

php artisan delete:wire-reports {name}

{name} 参数应为要删除的组件的名称。它将删除组件类和相关视图文件。示例

要从 Demo 文件夹中删除 TestReport 组件

php artisan delete:wire-reports Demo.Test

这将删除

The Livewire component file at app/Livewire/Reports/Demo/TestReport.php
The Blade view file at resources/views/livewire/reports/demo/test-report.blade.php

自定义报告组件

编辑生成的组件文件以定义报告的数据构建器和视图

<?php

namespace App\Livewire\Reports;

use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Rishadblack\WireReports\ReportComponent;

class TestReport extends ReportComponent
{
    public $view = 'livewire.reports.test-report';

    public function builder(): Builder
    {
        return User::query();
    }
}

编辑 Blade 视图文件以自定义报告布局

<x-report.table>
    <x-slot:header>
        <!-- Header content -->
    </x-slot:header>
    <x-slot:subheader>
        <!-- Subheader content -->
    </x-slot:subheader>
    <x-slot:thead>
        <!-- Table headers -->
    </x-slot:thead>
    <x-slot:tbody>
        @foreach ($datas as $data)
            <tr>
                <td scope="row">{{ $data->id }}</td>
                <td><strong>{{ $data->name }}</strong></td>
                <td>{{ $data->email }}</td>
            </tr>
        @endforeach
    </x-slot:tbody>
</x-report.table>

许可

此软件包采用 MIT 许可证。有关更多详细信息,请参阅 LICENSE。

贡献

欢迎贡献!请参阅 CONTRIBUTING.md 以获取指南。

支持

对于问题或功能请求,请在该 GitHub 仓库中创建一个问题。