odysseycrew / datatables
Datatables 插件
README
易于创建数据表的包
安装
php artisan vendor:publish --tag=datatables
基本用法
在控制器中使用
Odysseycrew\DataTables\DataTable as DataTable
为您的表创建 create 方法
private function getTable()
{
$table = new DataTable('tableOrModelName');
return $table;
}
并使用它
public function index()
{
return response()->view('data.index',['dataTable' => $this->getTable()]);
}
public function indexAjax(Request $request)
{
$output = $this->getTable()->output($request);
return response()->json($output);
}
默认情况下,$table 将尝试从 $tableOrModelName.indexAjax 获取输出
最后,在视图中使用
@dataTable($dataTable)
如果您想包含 datatables JS 和 CSS 文件,请在视图中使用 'datatables-js' 和 'datatables-css' 部分。
警告!如果您不想使用上述部分,需要将表中的 noSection 参数设置为 true;
示例
private function getTable()
{
$table = new DataTable('tableOrModelName');
$table->noSection = true;
return $table;
}
高级用法
__construct()
`$table = new DataTable('tableOrModelName','routeName','columns','options'')
构造函数接受四个参数
- 模型(模型或表名)
- 路由(可为空,返回表输出的路由名 - 默认是 $model.indexjax)
- 列(可为空,列的数组,格式为 ['columnName','columnDatabaseField','columnsOptions'])
- 选项(可为空,数组,格式为 ['option1' => '1', 'option2' => '2'])
所有这些表参数都可以通过设置函数 setModel(), setRoute(), setColumns() 和 setOptions() 设置
addColumn()
$table->addColumns(['columnName','columnDatabaseField','columnsOptionsArray'])
changeColumn()
$table->addColumns('columnDatabaseField',['columnName','columnDatabaseField','columnsOptionsArray'])
removeColumns()
通过列字段删除列
$table->removeColumns('columnsField')
setQuery()
设置输出数据
示例
$query = User::where('active',1)->get();
$table->setQuery($query);
addToQuery()
向默认查询添加规则
示例
$table->addToQuery(['where','active',1]);
setActions()
在表格末尾添加操作。此方法接受格式为 ['actionLabel','actionName','content'] 的操作数组。# 标签之间的参数将被模型属性替换。
示例
$table->setActions([
['Show','actions','<a href="'.route('user.show',['id' => '#id#']).'">Show</a>']
]);
}
在此示例中 #id# 将被替换为 $user->id
setParams()
为 AJAX 调用或路由设置额外的参数
AJAX
`$table->setParams(['name' => 'Example'])
`
路由
`$table->setParams(['name' => 'Example'], 'route')
`
addParams()
像 setParams() 函数一样使用。传入的参数将被添加到之前定义的参数中。