plokko/table-helper

该包最新版本(0.2.0)没有提供许可信息。

0.2.0 2023-11-22 09:00 UTC

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>')的别名,删除列