syamsoul / laravel-datatable-ssp
Laravel 的 DataTable SSP。此包允许您在 Laravel 应用中从服务器端管理 DataTable。
3.9.2
2024-08-25 14:09 UTC
Requires
- php: >=8.0.0
- illuminate/console: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/http: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- dev-master
- 3.9.2
- 3.9.1
- 3.9.0
- 3.8.0
- 3.7.1
- 3.7.0
- 3.6.0
- 3.5.0
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.0
- 2.3.12
- 2.3.11
- 2.3.10
- 2.3.9
- 2.3.8
- 2.3.7
- 2.3.6
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.0
- 1.4.1
- 1.4.0
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1
- 1.0
This package is auto-updated.
Last update: 2024-09-25 14:22:25 UTC
README
文档、安装和使用说明
有关详细安装和使用说明,请参阅文档。
介绍
此包允许您在 Laravel 应用中从服务器端管理 DataTable(受 原始 DataTable SSP 启发)。
有关原始 DataTable SSP 的实现,您可以在此处参阅此处(点击此处)。
要求
- Laravel 9.0 及以上
安装
此包可以在 Laravel 9.0 或更高版本中使用。如果您正在使用 Laravel 的较旧版本,可能存在一些问题。如果出现问题,您可以创建新问题,我会尽快修复。
您可以通过 composer 安装此包
composer require syamsoul/laravel-datatable-ssp
注意: 请参阅 变更日志 以获取有关最近更改的更多信息。
使用 & 参考
* 在您阅读本节之前,您可以查看下面的示例以下示例,以使其更易于理解。
如何使用它?
首先,您必须将此行添加到您的控制器中
use SoulDoit\DataTable\SSP;
然后,将 SSP 服务注入到控制器的方法中(或使用 PHP new
关键字创建实例)
use SoulDoit\DataTable\SSP; class MyController extends Controller { public function get(SSP $ssp) { // or using `new` keyword: // $ssp = new SSP(); $ssp->setColumns($dt_cols_opt); $ssp->setQuery($dt_query); return $ssp->response()->json(); } }
这是
-
$dt_query
是一个返回 QueryBuilder/EloquentBuilder 或可调用的函数的查询构建器/Eloquent 构建器,例如$ssp->setQuery(function ($selected_columns) { return \App\Models\User::select($selected_columns); });
-
$dt_cols_opt
是您列的选项数组,例如$ssp->setColumns([ ['label'=>'ID', 'db'=>'id', 'formatter' => function ($value, $model) { return str_pad($value, 5, '0', STR_PAD_LEFT); }], ['label'=>'Username', 'db'=>'uname'], ['label'=>'Email', 'db'=>'email'], ]);
可用的列选项如下
[ 'label' => $dt_col_header, 'db' => $db_col_name, 'class' => $dt_class, 'formatter' => $dt_formatter, ],
这是
$dt_col_header
是列的标题(在视图/blade 中的表格),例如
$dt_col_header = 'Username';
$db_col_name
是基于数据库的列名,例如
$db_col_name = 'uname';
$dt_class
是将添加到表格中的类/类名(在视图/blade 中),例如
$dt_class = 'text-center'; // or use array for multiple classes $dt_class = ['text-center', 'text-bold'];
$dt_formatter
类似于修饰符,可以修改从数据库到视图/blade 显示的数据,例如
$dt_formatter = function ($value, $model) { return ucwords($value); // which is 'value' is the value of the column // or return $model->name; // which is 'model' is the model of the current row // or return $value . '(#' .$model->id. ')'; };
示例
在 PHP(控制器)中
namespace App\Http\Controllers\AdminPanel; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use SoulDoit\DataTable\SSP; class UsersController extends Controller { private $ssp; public function __construct() { $ssp = new SSP(); $ssp->enableSearch(); $ssp->allowExportAllItemsInCsv(); $ssp->setAllowedItemsPerPage([5, 10, 20, -1]); $ssp->frontend()->setFramework('datatablejs'); $ssp->setColumns([ ['label'=>'ID', 'db'=>'id', 'formatter' => function ($value, $model) { return str_pad($value, 5, '0', STR_PAD_LEFT); }], ['label'=>'Email', 'db'=>'email', ], ['label'=>'Username', 'db'=>'uname', ], ['label'=>'Created At', 'db'=>'created_at', ], ['label'=>'Action', 'db'=>'id', 'formatter' => function ($value, $model) { $btns = [ '<button onclick="edit(\''.$value.'\');">Edit</button>', '<button onclick="delete(\''.$value.'\');">Delete</button>', ]; return implode($btns, " "); }], ['db'=>'email_verified_at'], ]); $ssp->setQuery(function ($selected_columns) { return \App\Models\User::select($selected_columns) ->where('status', 'active') ->where(function ($query) { $query->where('id', '!=', 1); $query->orWhere('uname', '!=', 'superadmin'); }); }); $this->ssp = $ssp; } public function page() { return view('admin-panel.users-list', [ 'fe_settings' => $this->ssp->frontend() ->setInitialSorting('created_at', true) // this means `order created_at desc` ->setInitialItemsPerPage(10) ->setResponseDataUrl(route('users.get')) ->getSettings(true), ]); } public function get() { return $this->ssp->response()->json(); } }
在 Blade(视图)中
<html> <head> <title>Laravel DataTable SSP</title> </head> <body> <table id="datatable_1" class="table table-striped table-bordered" style="width:100%;"></table> <script> $(document).ready(function(){ $('#datatable_1').DataTable({!! $fe_settings !!}); }); function edit (id) { alert(`edit for user with id ${id}`); } function delete (id) { alert(`delete user with id ${id}`); } </script> </body> </html>
支持我
如果您发现此包对您有帮助,请通过向以下地址捐赠一些 BNB(BSC)来支持我。
0x364d8eA5E7a4ce97e89f7b2cb7198d6d5DFe0aCe
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。