plokko / table-helper
该包最新版本(0.2.0)没有提供许可信息。
0.2.0
2023-11-22 09:00 UTC
Requires
- php: >=7.2
- ext-json: *
- illuminate/support: >=5.4.0
- plokko/resource-query: ^0.2.3|dev-master
This package is auto-updated.
Last update: 2024-09-22 10:50:36 UTC
README
一个基于 Laravel 的辅助工具(基于 plokko/resource-query),用于创建动态(可排序和可筛选)的 AJAX 表格。
安装
通过 composer 安装 composer require plokko/querable-resource
...WIP TODO: JS
使用
通过传递要使用的数据库表名或基本查询来初始化 TableHelper
$table = TableHelper::table('users');
或要使用的基础查询(将添加筛选和条件到您的查询,将覆盖字段选择)
$table = TableHelper::table(User::where('id','>',0));
或一个 ResourceQuery 对象(将直接使用基础查询,将添加或替换筛选和排序)
$table = TableHelper::table(new \plokko\ResourceQuery\ResourceQueryBuilder());
然后您可以开始使用流畅的设置器定义表格和列属性。流畅的设置器将以可读的方式自定义您的表格和列,并允许在定义列的同时访问基础表格方法。
// TableHelper definition via fluent setters $table ->column('id')// "id" column scope ->column('name')// "name" column scope ->label('User name') ->sort(true) ->filter(true) ->column('name') ->label('User name') ->sort(true) ->filter(true) ->column('email') ->label('E-mail') ->align('right') ->sort(true) ->filter(true) ->type('email') //->class('primary white--text') //->cellClass('primary lighten-5') ->column('created_age') ->label('Creation age') ->sort(true) ->field(\DB::raw('TIMESTAMPDIFF(HOUR,created_at,CURRENT_TIMESTAMP )')) ->column('actions')// No associated table field ->virtual() ->columnView('<v-btn @click="">Test {{item.id}}</v-btn>') ->setPageSize(30) /// Sets the number of elements per page ->autoselect(true)/// Automatically applies it to the table even if in field scope ;
在控制器中返回 TableBuilder 实例将自动执行查询并返回数据;要启用同一页面的 AJAX 功能,如果请求类似于以下内容则返回它
if($request->ajax()){ return $table; }
将实例传递到视图中
//Use it in view return view('your-view.example',compact('table'));
然后使用 render() 方法渲染表格
<!-- ...your view code... --> <!-- Renders the table in your view --> {{ $table->render() }} <!-- ... -->
表格选项
- formAction(string $action) - 设置表单操作,默认为 ''
- column(string $name) - 通过名称声明或检索列
- removeColumn(string $name) - 通过名称删除列
- setDefaultSortBy(array $attr) - 默认排序顺序数组(例如:['field1',['field2','desc'],]
- setBaseLangFile(string $attr) - 设置标签的翻译文件,文件(或字段)应包含以字段名称为键、标签为值的数组
- selectFields(array|null $fields) - 明确设置所选字段(例如:['id',DB::raw('count(id)'),...])
- autoSelect(boolean $enabled) - 启用或禁用自动选择字段生成
方法
- render() - 返回表格(在视图中渲染)
- renderAttr() - 返回表格属性(在视图中渲染)
- renderBody() - 返回表格主体(在视图中渲染)
- getHeaders() - 返回数组形式的标题
列选项
通过调用一个带有值的函数来设置列字段
- label(string|null $value) - 用于标题的文本,如果没有指定,将使用全局翻译中的标签或字段名称
- field(string|null|\Illuminate\Database\Query\Expression $value) - 设置用于选择的表格字段(以及筛选或排序,如果没有明确指定),默认为表名,如果没有设置。
- type(string|null type) - 设置字段类型(例如 boolean,email 等)以进行格式化
- align(string|null type) - 设置标题对齐方式(左|中|右)
- component(string|null $component) - 设置字段组件(在渲染中)
- rowClass(string|null $class) - 设置行(CSS)类
- cellClass(string|null $class) - 设置单元格(CSS)类
- visible(bool $visible) - 设置列可见性
- virtual(bool $virtual) - 设置列为虚拟(没有对应的表字段,例如表格操作)
- columnView(null|string|\Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory|Closure $view) - 设置列视图
- virtual(bool $virtual) - 设置列为虚拟(没有对应的表字段,例如表格操作)
- attr(string $key,mixed $value) - 将一个字段属性作为键值对设置
- setAttrs(array $attributes) - 将所有属性作为键值数组设置
- sort(boolean|null|string|\Illuminate\Database\Query\Expression $field,[boolean $reverse]) - 使列可排序,第一个参数是表字段(null或false禁用排序,true使用基本字段或字符串或表达式指定排序字段)。如果$reverse设置为true,则排序将反转(desc时为asc,反之亦然)
- filter(string|boolean|Closure $condition='=',null|string|\Illuminate\Database\Query\Expression $field=null) - 使列可筛选,$condition指定要使用的条件,$field指定要使用的字段(如果为null,则默认为基本字段)
方法
- remove() - removeColumn('<column-name>')的别名,删除列