PHP code example of uvoelkel / serverside-datatables-bundle
1. Go to this page and download the library: Download uvoelkel/serverside-datatables-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
uvoelkel / serverside-datatables-bundle example snippets
# app/AppKernel.php
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Voelkel\DataTablesBundle\VoelkelDataTablesBundle(),
);
// ...
}
// ...
}
# AppBundle/DataTable/CustomerTable.php
namespace AppBundle\DataTable;
use Voelkel\DataTablesBundle\Table\AbstractDataTable;
use Voelkel\DataTablesBundle\Table\TableBuilderInterface;
use Voelkel\DataTablesBundle\Table\TableOptions;
use Voelkel\DataTablesBundle\Table\TableSettings;
use Voelkel\DataTablesBundle\Table\Column\Column;
use Voelkel\DataTablesBundle\Table\Column\UnboundColumn;
use Voelkel\DataTablesBundle\Table\Column\CallbackColumn;
use Voelkel\DataTablesBundle\Table\Column\EntityColumn;
use Voelkel\DataTablesBundle\Table\Column\EntitiesColumn;
class CustomerTable extends AbstractDataTable
{
protected function configure(TableSettings $settings, TableOptions $options)
{
$settings->setName('customer');
$settings->setEntity('App\Entity\Customer');
$options['stateSave'] = true;
}
protected function build(TableBuilderInterface $builder)
{
$builder
->add('id')
->add('firstname')
->add('lastname', Column::class, [
'label' => 'Lastname'
])
->add('opening', UnboundColumn::class, [
'callback' => function(Customer $customer) {
return 'Dear ' . ('f' === $customer->getGender() ? 'Madam' : 'Sir');
}
])
->add('status', CallbackColumn::class, [
'callback' => function($status) {
switch ($status) {
case 1:
return 'something';
break;
case 2:
return 'something else';
break;
default:
return 'invalid';
break;
}
])
->add('group.name')) // customer has one group
->addColumn(new EntityColumn('state', 'city.state', 'name')) // customer has one city. city has one state
->addColumn(new EntitiesColumn('orders', 'orders', 'number')) // customer has many orders
->addColumn(new EntitiesCountColumn('addresses_count', 'addresses')) // customer has many addresses
->addColumn('actions', ActionsColumn::class, [
'actions' => [
'edit' => [
'title' => 'edit customer',
'label' => '<i class="fa fa-edit"></i>',
'callback' => function(Customer $customer, \Symfony\Component\Routing\RouterInterface $router) {
return $router->generate('customer_edit', ['id' => $customer->getId()]);
},
],
],
'dropdown' => true,
'dropdown_label' => 'Actions',
])
;
}
}
# AppBundle/Controller/CustomerController.php
use AppBundle\DataTable\CustomerTable;
class CustomerController extends Controller
{
public function indexAction()
{
return $this->render('AppBundle:Customer:index.html.twig', [
'table' => new CustomerTable(),
]);
}
}
use Voelkel\DataTablesBundle\Table\AbstractDataTable;
class CustomerTable extends AbstractDataTable
{
protected function build()
{
$service = $this->container->get('service');
// or short
$service = $this->get('service');
// ...
->addColumn(new Column('id', 'id', [
'format_data_callback' => function($data, $object, Column $column) {
$router = $this->container->get('router');
// or
$router = $this->get('router');
},
]))
// ...
}
}
# AppBundle/DataTable/CustomerTable.php
private $myAwesomeService;
public function __construct($myAwesomeService)
{
$this->myAwesomeService = $myAwesomeService;
}
protected function configure(TableSettings $settings, TableOptions $options)
{
$settings->setName('customer');
$settings->setEntity('AppBundle\Entity\Customer');
$settings->setServiceId('app.table.customer');
}
# AppBundle/Controller/CustomerController.php
public function indexAction()
{
return $this->render('AppBundle:Customer:index.html.twig', [
'table' => $this->get('app.table.customer'),
]);
}