Skip to content
JQuery DataTable plugin server-side processing component for CakePHP
Find file
Pull request Compare This branch is 46 commits behind tigrang:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

CakePHP DataTable Plugin

DataTable is a cakephp plugin for JQuery DataTables.


  • CakePHP 2.2 or higher



  1. Download this:
  2. Unzip
  3. Copy the resulting folder to app/Plugin
  4. Rename the folder to DataTable

[GIT Submodule]

In your app directory run:

git submodule add Plugin/DataTable
git submodule init
git submodule update

[GIT Clone]

In your plugin directory run:

git clone DataTable

Enable Plugin

In your app/Config/bootstrap.php:

// OR


Example controller:

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(

See docblock for complete list of component settings.

Once you have your component setup, you will need to add your view.

  • First create a View/[ModelName]/datatable folder
  • Create action_name.ctp view inside the folder

The DataTableResponseView (automatically set by the component) class has a member called dtResponse which holds the return data for jquery datatables, including aaData.

By default, the view var $dtResults will hold resultant model data after searching and paginating. It can be customized with the viewVar setting.

Example view file:

foreach($dtResults as $result) {
    $this->dtResponse['aaData'][] = array(

Example bSearchable callback:

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
Something went wrong with that request. Please try again.