greystoneweb / livewire-datatables
0.1.3
2024-02-26 23:09 UTC
Requires
- laravel/framework: ^10.41
- livewire/livewire: ^3.3
Requires (Dev)
- laravel/pint: ^1.13
README
简介
基本示例
使用make命令:php artisan make:datatable Users/UsersTable
将会创建两个文件:Users/UsersTable.php 和 users/users-table-row.blade.php 在您的Livewire目录中。
功能
排序
要启用排序,只需在列上调用 sortable() 方法。
public function columns(): array { return [ Column::make('Name') ->sortable() ]; }
如果列标题标签与数据库列不同,请确保在 make() 方法的第二个参数中指定它。
Column::make('Name', 'full_name') ->sortable()
如果您需要任何自定义排序逻辑,可以将回调函数传递给 sortable() 方法。
Column::make('Name') ->sortable(function ($query, $direction) { $query->orderBy('last_name', $direction); })
过滤器
搜索
导出结果
要使用此功能,您必须安装Laravel Excel。
示例
在组件类内部
use Greystoneweb\LivewireDataTables\DataTable; use Greystoneweb\LivewireDataTables\Traits\Exportable; class UsersTable extends DataTable { // Use the Exportable trait use Exportable; // Define a fileName method that returns the filename protected function fileName(): string { return 'users'.date('Y-m-d').'.csv'; } ... }
然后您可以通过 wire:click 在视图中调用 export() 方法,所有结果将自动导出到CSV文件,并应用筛选/排序。如果导出的文件看起来不太对劲,您可以创建一个自定义的 Export 实例,该实例扩展 Greystoneweb\LivewireDataTables\Export,并在数据表组件的 exporterInstance 方法中返回它。这对于处理关系尤其有用。
示例
您的组件
use Greystoneweb\LivewireDataTables\DataTable; use Greystoneweb\LivewireDataTables\Export; use Greystoneweb\LivewireDataTables\Traits\Exportable; class UsersTable extends DataTable { // Use the Exportable trait use Exportable; // Define a fileName method that returns the filename protected function fileName(): string { return 'users'.date('Y-m-d').'.csv'; } public function exporterInstance(): Export { return new UsersExport($this); } ... }
您的自定义导出器
use Greystoneweb\LivewireDataTables\Export; use Maatwebsite\Excel\Concerns\WithMapping; class UsersExport extends Export implements WithMapping { public function headings(): array { return [ 'Name', 'Organization', 'Email', ]; } public function map($user): array { return [ $user->name, $user->organization->name, $user->email, ]; } }