rishadblack / wire-reports
使用 WireReports 在 Laravel 中创建响应式、实时报告视图。由 Livewire 驱动,此软件包允许轻松导出到 PDF、Excel 或打印,简化您的报告流程。
1.0.4
2024-09-29 09:29 UTC
Requires
- php: ^8.1
- barryvdh/laravel-snappy: ^1.0
- carlos-meneses/laravel-mpdf: ^2.1
- h4cc/wkhtmltopdf-amd64: ^0.12.4
- illuminate/support: ^9.0|^10.0|^11.0
- maatwebsite/excel: ^3.1
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ~9.0
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 仓库中创建一个问题。