steelants / datatable
基于 Laravel 和 Livewire 的简单 Datatable 类
2.2.6
2024-07-31 15:08 UTC
Requires
- laravel/framework: ^11.0
- livewire/livewire: ^3.0
This package is auto-updated.
Last update: 2024-09-25 19:49:16 UTC
README
由 SteelAnts s.r.o. 创建
使用方法
namespace App\Livewire; use App\Models\User; use SteelAnts\DataTable\Livewire\DataTableComponent; use Illuminate\Database\Eloquent\Builder; class UserTable extends DataTableComponent { // Get model query public function query(): Builder { return User::query(); } // Set headers public function headers(): array { return [ 'id' => 'ID', 'name' => 'Name', 'email' => 'E-mail', ]; } // Set actions public function actions($item) : array { return [ [ // livewrei action 'type' => "livewire", 'action' => "remove", 'parameters' => $item['id'], 'text' => "Remove", 'actionClass' => 'text-danger', 'iconClass' => 'fas fa-trash', 'confirm' => 'Are you sure you want to delete this post?', ], [ // url action 'type' => "url", 'url' => rounte('user.show', [id => $item['id']]), 'text' => "Show", 'iconClass' => 'fas fa-eye', ] ]; } // Custom render of 'name' column public function renderColumnName($value, $row){ return '<b>'.e($value).'</b>'; } // Livewire actions public function remove($id){ User::find($id)->delete(); } }
不使用查询/模型进行使用
// instead of method query() implement dataset() public function dataset(): array { return [ [ 'id' => '1', 'name' => 'Name 1', 'email' => 'E-mail 1', ], [ 'id' => '2', 'name' => 'Name 2', 'email' => 'E-mail 2', ], // ... ]; }
渲染
@livewire('user-table', [], key('data-table'))
配置
// Enable sorting public bool $sortable = true; // Enable pagination public bool $paginated = true; // Enable fulltext search public bool $searchable = false; public bool $searchableColumns = [];
可选的转换方法
// Transformace whole row on input (optional) // Returns associative array public function row(Model $row) : array { return [ 'id' => $row->id, ]; } // Transform one column on input (optional) public function columnFoo(mixed $column) : mixed { return $column; } // Transform whole row on output (optional) // !!! NOTE: values are rendered with {!! !!}, manually escape values public function renderRow(array $row) : array { return [ 'id' => e($row['id']) ]; } // Transform one column on output (optional) // !!! NOTE: values are rendered with {!! !!}, manually escape values public function renderColumnFoo(mixed $value, array $row) : string { return e($value); }
其他包
steelants/laravel-auth steelants/laravel-boilerplate steelants/datatable steelants/form steelants/modal steelants/laravel-tenant