dev-master
9999999-dev https://github.com/tigrang/cakephp-datatableCakePHP DataTable Plugin
MIT
The Requires
- php >=5.3.0
- composer/installers *
cakephp table datatable
CakePHP DataTable Plugin
DataTable is a cakephp plugin for JQuery DataTables., (*1)
[Manual], (*2)
app/Plugin
DataTable
[GIT Submodule], (*3)
In your app directory run:, (*4)
git submodule add https://github.com/tigrang/cakephp-datatable.git Plugin/DataTable git submodule init git submodule update
[GIT Clone], (*5)
In your plugin directory run:, (*6)
git clone https://github.com/tigrang/cakephp-datatable.git DataTable
In your app/Config/bootstrap.php
:, (*7)
CakePlugin::loadAll(); // OR CakePlugin::load('DataTable');
<?php class UsersController extends AppController { /** * Components * * @var array */ public $components = array( 'DataTable.DataTable' => array( 'columns' => array( 'id' => false, // bSearchable and bSortable will be false 'username' => 'Name', // bSearchable and bSortable will be true, with a custom label `Name` // by default, the label with be a Inflector::humanize() version of the key 'email' => array( 'bSearchable' => 'customSearch',// will use model callback to add search conditions ), 'Actions' => null, // tells DataTable that this column is not tied to a field ), ), ); /** * Helpers * * @var array */ public $helpers = array( 'DataTable.DataTable', ); }
You may now paginate more than one model in a view. This becomes useful when displaying two or more hasMany associated models for a view
page.
List all models to paginate in $this->DataTable->paginate
property:, (*8)
<?php public function view() { $this->DataTable->paginate = array('User', 'Article'); }
Note: These models must be directly related., (*9)
See docblock for complete list of component settings., (*10)
Once you have your component setup, you will need to add your view., (*11)
View/[ModelName]/datatable
folderaction_name.ctp
view inside the folderThe DataTableResponseView (automatically set by the component) class has a member called dtResponse
which holds
the return data for jquery datatables, including aaData
., (*12)
By default, the view var $dtResults
will hold resultant model data after searching and paginating. It can be
customized with the viewVar
setting., (*13)
<?php foreach($dtResults as $result) { $this->dtResponse['aaData'][] = array( $result['User']['id'], $result['User']['username'], $result['User']['email'], 'actions', ); }
bSearchable
callback:<?php class Users extends AppModel { public function customSearch($field, $searchTerm, $columnSearchTerm, $conditions) { if ($searchTerm) { $conditions[] = array("$field LIKE" => '%' . $searchTerm); // only do left search } if ($columnSearchTerm) { $conditions[] = array($field => $columnSearchTerm); // only do exact match } return $conditions; } }
<?php $this->DataTable->render(); // renders default model for this view $this->DataTable->render('AssociatedModel'); // renders 'AssociatedModel' table
If you create the <table>
yourself, be sure to add a data-model="Model"
attribute to the table tag. The helper is still required to parse the column settings and outputs a global javascript dataTableSettings
available for you to use.
The helper by default uses the following init script:, (*14)
$('.dataTable').each(function() { var table = $(this); var model = table.attr('data-model'); var settings = dataTableSettings[model]; table.dataTable(settings); });
CakePHP DataTable Plugin
MIT
cakephp table datatable