totop275 / ss-datatables
A handler for datatables server side's request
Requires
- php: ^5.4 || ^7.0
- illuminate/http: *
README
A handler for datatables server side's request
About ss-datatables
ss-datatables contains php traits which contain a view loader for server side datatables requests. A helper to handle ajax requests from datatables. see demo ss-datatables here
What ss-datatables do?
Basically, ss-datatables only add a method named list
to the controller that is used to respond to datatables ajax request.
Working Feature
- List data
- Pagination
- Multiple/single field filter/search
- Multiple/single field short
- Search
- Data limit
- Dinamic column request
Installation
Use the depency manager composer to install ss-datatables.
composer require totop275/ss-datatables
Usage
- Include Datatables trait to your controller
... use Kitablog\Traits\Datatables; ... class MyController extends Controller{ use Datatables; ...
- Define shared table data ss-datatables uses object properties to define columns and tables used to serve datatables. Below are the properties used by ss-datatables.
-
column :
Defines the tables, columns, and table relationships that are used. You can write this on your controller class constructor (
__construct
)- example:
-
$this->column=[ 'alias' => ['item_name'=>'items.name','item_unitime'=>'concat(items.uq,UNIX_TIMESTAMP())'], 'available' => ['name','gender','item_name','item_unique'], 'searchable' => ['name','item_name'], 'table' => '['items'=>['users.item','=','items.id'],'address'=>['address.user','=','users.id']]' ]```
-
- column[alias]
- Defines a column name alias.
key
for alias,value
for original references - rule
[alias1=>reference1,alias2=>reference2,....]
- example
['item_name'=>'items.name','item_unitime'=>'concat(items.uq,UNIX_TIMESTAMP())']
- Defines a column name alias.
- column[available]
- Defines a list of columns that can be used
- rule
[column1,column2,column3,...]
- example
['name','gender','item_name','item_unique']
- column[searchable]
- Defines a list of columns that can be searched when doing a global search
- rule
[column1,colum2,column3,...]
- example
['name','item_name']
- column[table]
- Defines table relationship that required for data request
- rule
[table_alias=>[origin_reference_column,operator,target_reference_column],...]
- example
['items'=>['users.item','=','items.id'],'address'=>['address.user','=','users.id']]
- example:
-
model
- Defines main eloquent model of requested data
- example
$this->model=\App\User::class
-
shouldSelect
- Defines a list of columns that will always be returned on every request
- example
$this->shouldSelect=['users.id']
-
actionBtn
- Defines the action buttons on the table (if any).
- example
$this->actionBtn=[ ['<a href="'.url('user/item').'/%s/edit" class="btn btn-sm btn-flat btn-info">Edit</a>','id'], [' <btn class="btn btn-sm btn-flat btn-danger btnDelete" data-id="%s">Delete</btn>','id'] ];```
- Create a route for ss-datatables
- create a route for ss-datatables
Route::get('ajax','YourController@list')
- or branching on some route
... use Kitablog\Traits\Datatables; ... class MyController extends Controller{ use Datatables; ... public function showAll(Request $request){ if($request->input('ajax')){ return $this->list($request); } ... }
Client side usage
Read detail on datatables documentation.
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.