mfrouh/datatable-livewire

datatable livewire

1.2 2021-05-25 15:05 UTC

This package is auto-updated.

Last update: 2024-09-09 08:16:20 UTC


README

composer require mfrouh/datatable-livewire

此包使用Laravellivewiretailwindalpinejs构建

创建 Livewire DataTable

php artisan make:datatable user
php artisan make:datatable backend.user
php artisan make:datatable backend/user

将保存在文件夹 App\Http\livewire\DataTables 中

添加到 Blade

@livewire('datatable.backend.user') for backend.user
@livewire('datatable.admin.backend.user') for admin/backend/user

backend\user 将是 App\Http\livewire\DataTables\Backend\User.php

backend.user 将是 App\Http\livewire\DataTables\Backend\User.php

user 将是 App\Http\livewire\DataTables\User.php

数据表代码

<?php

namespace App\Http\Livewire\Datatables;

use MFrouh\DataTable\Datatables\Datatables;
use App\Models\User;

class User extends Datatables
{

     /**
     * add model
     */
    public $model = User::class;


    /**
     * query builder
     *
     */
    public function queryBuilder()
    {
        return $this->model::query();
    }


    /**
     * 'method_name or route()' => 'permission',
     *  ex  'create' => 'create post',
     *
     */
    public array $tablePermissions = [];

    /**
     * add columns in array
     *
     */
    public function columns(): array
    {
        return [];
    }


    /**
     * add actions in array
     *
     */
    public function actions(): array
    {
        return [];
    }
}

操作

  public function actions(): array
  {
        return [
            Action::header()->events(['action'  => 'label']),
            Action::header()->urls(['action'  => 'label']),
            Action::action()->events(['action'  => 'label']),
            Action::action()->urls(['action' => 'label'])
        ];
  }

['TextColumn','NumberColumn','ImageColumn','PriceColumn', 'DateTimeColumn','LabelColumn','LangColumn','MinuteColumn', 'PercentageColumn']

  public function columns(): array
    {
        return [
           TextColumn::name('name')->label('label')->sortable()->searchable(),
           NumberColumn::name('name')->label('label')->sortable()->searchable(),
           MinuteColumn::name('name')->label('label')->sortable()->searchable(),
           PercentageColumn::name('name')->label('label')->sortable()->searchable(),
           LangColumn::name('name')->filename('filename')->label('label'),
           DateTimeColumn::name('name')->format(format')->label('label')->sortable()->searchable(),
        ];
    }