Mar 24

Using DataTables with Symfony (Doctrine version)

Recently we’ve discovered great jQuery plugin DataTables. Except it looks great it has also some wonderful AJAX features which allows to apply it to really huge data lists.

Here is the quick way to tie it with your data source using Doctrine ORM (please refer to this post in case you need to use it with Propel:


  public function executeList(sfWebRequest $request)
    if ($request->isXmlHttpRequest())
      $q = Doctrine_Query::create()
      $pager = $this->getPager('table', $q, $request->getParameter('page', $this->getPage()), $request->getParameter('iDisplayLength'));
      $aaData = array();
      $list = $pager->getResults();
      foreach ($list as $v)
	$aaData[] = array(
          "0" => $v->getColumn1(),
          "1" => $v->getColumn2(),
          "2" => $v->getColumn3(),
          "3" => $v->getColumn4(),
      $output = array(
     	"iTotalRecords" => count($pager),
     	"iTotalDisplayRecords" => $request->getParameter('iDisplayLength'),
    	"aaData" => $aaData,
      return $this->renderText(json_encode($output));


<style type="text/css" title="currentStyle">
	@import "/sfDataTables/css/demo_page.css";
	@import "/sfDataTables/css/demo_table.css";
<script type="text/javascript" language="javascript" src="/sfDataTables/js/jquery.dataTables.js">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
			<th width="25%">Column1</th>
			<th width="25%">Column2</th>
			<th width="25%">Column3</th>
			<th width="25%">Column4</th>
			<td colspan="3" class="dataTables_empty">Loading data from server</td>
			<th width="25%">Column1</th>
			<th width="25%">Column2</th>
			<th width="25%">Column3</th>
			<th width="25%">Column4</th>
$(document).ready(function() {
   $('#example').dataTable( {
      "bStateSave": true,
      "sPaginationType": "full_numbers",
      "bProcessing": true,
      "bServerSide": true,
      "sAjaxSource": "<?php echo url_for('module/list') ?>",

Please note that these 2 parameters:

"bStateSave": true,
"sPaginationType": "full_numbers",

are rather optional and everything will work w/o them.
Also pay attention to this plugin “extras” – there are some really sweet things to extend its functionality.
Btw, have you been used this or similar plugins before? Do you think it’s good enough for 100K records list?
Our tests show that it works like charm but never knows how it goes in real life.

Author: symfonian


[…] Using DataTables with Symfony (Doctrine version) | SymfonyLab […]

[…] En parcourant la toile, je suis tomb? sur un post du blog “” qui trait? ce sujet. J’ai donc jug? utile de faire suivre l’information. Le post original se trouve ? l’adresse suivante: […]

March 28, 2011

The command filling $aaData is bugged – will always overwrite the “0” key.

March 28, 2011

You are right, thank you for the updated. It has been fixed

April 8, 2011

I get the following error when trying to use this code:

Call to undefined method homeActions::getPage

Have you ommitted this method? What should it contain?

FYI, this page /site ( breaks in Mac Safari 5

April 8, 2011


I’m having an issue getting the paging to work with this and would be grateful if you could contact me. The paging buttons don;t seem to fire an event and no XHR request is made to the server when I click the next or previous buttons. Symfony version is 1.4. I can display the data and the show x entries dropdown is working.

Many thanks!

April 30, 2011


i’m curious about using getPager(), cannot finds this method at my symfony 1.4.

do you use any special plugins, where getPager described?

Pinak Mehta
September 7, 2016

Attempted to call an undefined method named “getPager” of class “Symfony\CRUDBundle\Controller\DefaultController”

why this happen?

Comments RSS TrackBack Identifier URI

Leave a comment