advicepharma/tablegenerator

一个用于与react js一起使用的表格生成器

1.0.25 2022-12-29 15:18 UTC

README

Latest Version on Packagist Total Downloads

一个用于创建结构化json的包,该json应与react组件一起使用。

需求

您必须安装

安装

您可以通过composer安装此包

composer require advicepharma/tablegenerator

基本用法

use Advicepharma\Tablegenerator\Tablegenerator;
use Advicepharma\Tablegenerator\Elements\Action;
use Advicepharma\Tablegenerator\Elements\Column;
use Advicepharma\Tablegenerator\Elements\ActionColumn;
use Spatie\QueryBuilder\QueryBuilder;

$users = QueryBuilder::for(App\Models\User::class);

$table = new Tablegenerator;
$table->query($users)
        ->paginate()
        ->addFilter()
        ->addSorts()
        ->table()
        ->addColumn(
            [
                (new Column)
                    ->field('id')
                    ->label('ID')
                    ->filtrable()
                    ->sortable(),

                (new Column)
                    ->field('name')
                    ->label('Name')
                    ->filtrable()
            ]
        );

创建表格命令

php artisan make:advtable TableName --model=Model

例如

php artisan make:advtable UserTable --model=User

列对象

label(<string>) 列标签(标题) field(<string>)QueryBuilder 对象中显示字段 filtrable() 设置列可筛选 sortable() 设置列可排序

添加列

添加列接受 ColumnColumn 对象的数组。

$table->->table()
        ->addColumn(
            [
                (new Column)
                    ->field('name')
                    ->label('Name'),
                (new Column)
                    ->field('email')
                    ->label('Email')
            ]
        )

或者

$table->->table()
        ->addColumn(
            (new Column)
                ->field('name')
                ->filterKey('name')
                ->label('Name')
                ->filtrable()
                ->sortable()
        )

操作列

操作列用于在表中渲染操作。默认操作为编辑和删除

(new ActionColumn)
    ->label('')
    ->addAction(
        (new Action)
            ->type(Action::ACTION_EDIT)
            ->properties(
                [
                    'link_to' => '/account/users/#id#'
                ]
            )
    )
    ->addAction(
        (new Action)
            ->type(Action::ACTION_DELETE)
            ->properties(
                [
                    'confirm' => true,
                    'confirm_message' => 'Do you really want to delete this user?',
                    'link_to' => route('user.destroy', '#id#', false)
                ]
            )
    )

type 可以是任何您想要的内容:这两个是默认的。

properties 可以包含所有将被前端使用的属性

分页

分页非常简单:您需要添加 ->paginate() 来创建默认分页结构。如果需要,您可以通过传递一个整数值来指定每页大小 ->paginate(100)

API资源

如果您想使用ApiResource功能,您可以通过以下方式添加它

$table->->table()
    ->withResource(YourResource::class)

关系列

如果您正在使用具有关系的QueryBuilder,例如

QueryBuilder::for(App\Models\Post::class)->with('user');

您只需要指定列字段,使用点表示法

(new Column)->field('user.name')->label('User Name')

如果您想筛选相关字段,您需要添加 filterKey('user.name')(或您想要搜索的任何table.field值)

遗憾的是,尚不支持对关系字段进行排序

测试

composer test

更新日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件giacomo.garavaglia@advicepharma.com联系,而不是使用问题跟踪器。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。

Laravel Package Boilerplate

此包是使用Laravel Package Boilerplate生成的。