advicepharma / tablegenerator
一个用于与react js一起使用的表格生成器
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- laravel/framework: ^8.0|^9.0
- laravel/pint: ^1.3
- orchestra/testbench: ^6.0
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.0
README
一个用于创建结构化json的包,该json应与react组件一起使用。
需求
您必须安装
- spatie query builder (https://spatie.be/docs/laravel-query-builder/v3/introduction)
安装
您可以通过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()
设置列可排序
添加列
添加列接受 Column
或 Column
对象的数组。
$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生成的。