CodeIgniter library for Datatables server-side processing / AJAX, easy to use :3
Commit : 870b1caadbf9a2756b513c1e58fe5f153086b399
Change basic API to create Datatables
- Old :
$this->datatables->new(); - New :
$this->datatables->init();
Change API to init created datatables config
- Old :
$this->datatables->init(); - New :
$this->datatables->create();
- Easy to use.
- Generates Datatable and JSON for server side processing in just one controller.
- Multiple Datatables in one page.
- Use CodeIgniter Query Builder Class to produce query (support all functions). Read Documentation
- Support columns rendering/formatting.
- Able to define searchable table columns.
- Configurable datatables options. Read Documentation
-
jQuery
<script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script> -
DataTables
<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script> -
CIgniter Datatables Library
Download and place to your codeigniter libraries folder
Controllers
$this->load->library('Datatables');
$dt_authors = $this->datatables->init();
$dt_authors->select('*')->from('authors');
$dt_authors
->style(array(
'class' => 'table table-striped table-bordered',
))
->column('First Name', 'first_name')
->column('Last Name', 'last_name')
->column('Email', 'email');
$this->datatables->create('dt_authors', $dt_authors); Views
$this->datatables->generate('dt_authors');
// Add this line after you load jquery from code.jquery.com
$this->datatables->jquery('dt_authors');
Use CodeIgniter Query Builder Class/Active Record to build SQL query. Read Query Builder Documentation
Create new variable to create initialize Datatables.
$dt_authors = $this->datatables->init();Select columns and table. NOTE : Don't use ->get() or other method for executing the query, let the library do for you.
$dt_authors->select('first_name, last_name, email')->from('authors');Use column() to add column to datatables.
$dt_authors
->column('First Name', 'first_name')
->column('Last Name', 'last_name')
->column('Email', 'email');Create datatables instance using created configurations ($dt_authors) and provide unique name ('dt_authors')
$this->datatables->create('dt_authors', $dt_authors);
Generate table in views
$this->datatables->generate('dt_authors);
$this->datatables->jquery('dt_authors);
// $dt_authors is an example
$dt_authors
->column('Name', 'name', function($data, $row){
return $row['first_name'] .' '. $row['last_name'];
})
->column('Age', 'age', function($data, $row){
return $data . ' years old';
})
->column('Email', 'salary');
$t->create();// $dt_authors is an example
$dt_authors
->searchable('first_name, age'); // table columns
// -> ... other chain methodsDataTables and its extensions are extremely configurable libraries and almost every aspect of the enhancements they make to HTML tables can be customised.
You can use set_options add the options.
Note : Second parameter will not produce single quote, wrap option value with double quotes to produce single quotes or use escaping.
// $dt_authors is an example
$dt_authors
->set_options('searching', 'false') // searching : false
->set_options('pagingType', '\'simple\'') // pagingType : 'simple'
//->set_options('pagingType', "'simple'")
->set_options('lengthMenu', '[ 10, 25, 50, 75, 100 ]') // lengthMenu : [ 10, 25, 50, 75, 100 ]You can use array too ...
->set_options(array(
array('searching', 'false')
array('pagingType', "'simple'")
array('lengthMenu', '[ 10, 25, 50, 75, 100 ]')
));Use set_options('ajax.data', '...') to override ajax data options
This is workaround incase you want to show pagination in both top and bottom of Datatables. I will create new API with the other changes when it ready.
Go to DatatablesBuilder.php and search for '$output' at line 176 and add this lines (#7)
\"pagingType\": \"full_numbers\",
\"sDom\": '<\"top\"lfprtip><\"bottom\"><\"clear\">',
You can use style to add table tag attributes to styling your table.
// $dt_authors is an example
$dt_authors
->style(array(
'class' => 'table table-bordered table-striped',
))
Version 1.5
- Add new API to override ajax data
- Support multiple datatables in one page
- Fix unable to search on field contains null
Version 1.1
- Fix searching when use alias for columns
- Remove query_builder, use direct
select()to build query
Version 1.0
- Initial Release (Development)