Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

PHP DataTables Server-Side

Install:

$ composer require keanor/php-datatables

Example, for users table:

  1. Create datatable class:
<?php/** * Created by PhpStorm. * User: keanor * Date: 17.02.17 * Time: 11:39 */namespaceAdministration\DataTable;
usePHPDataTables\AbstractDataTable;
/** * Class UserDataTable *  * @package PHPDataTables\DataTables */class UserDataTable extends AbstractDataTable
{
/** * @return string */publicfunctiongetTableName(): string
{
return'users';
}
/** * Initialize table */publicfunctioninit()
{
$this->addColumn([
'name' => 'id',
'options' => [
'search_type' => 'exactly',
'label' => 'ID',
],
]);
$this->addColumn([
'name' => 'role',
'options' => [
'label' => 'Роль',
],
]);
$this->addColumn([
'name' => 'phone',
'options' => [
'search_type' => 'fulltext',
'label' => 'Телефон',
],
]);
$this->addColumn([
'name' => 'last_name',
'options' => [
'label' => 'Фамилия',
],
]);
$this->addColumn([
'name' => 'first_name',
'options' => [
'label' => 'Имя',
],
]);
$this->addColumn([
'name' => 'second_name',
'options' => [
'label' => 'Отчество',
],
]);
}
}
  1. Inject DataTableView into page with table:

2.1) Create DataTable in controller:

// ...$adapter = newDoctrineDBAL($this->connection);
$usersDataTable = newUserDataTable($adapter);
$dataTableView = newDataTableView(
'#usersTable', // HTML ID Attribute'/administration/user/data', // ajax URL$usersDataTable,
[ // html tag <table> attributes'id' => 'usersTable',
'class' => 'table table-striped table-bordered',
'cellspacing' => '0',
'width' => '100%',
]
);
// ... invoke renderer or include view

2.2) Invoke DataTableView in template

For native php:

// render tableecho$dataTableView->renderHtml();
// render jsecho'<script type="text/javascript">';
echo$dataTableView->renderJs();
echo'</script>';

For twig:

{% blockcontent %}
{{ dataTableView.renderHtml() | raw }}
{% endblock %}
{% blockinline %}
 <scripttype="text/javascript"> {{ dataTableView.renderJs() | raw }} </script>
{% endblock %}
  1. Create data request handler

In controller:

$adapter = newDoctrineDBAL($this->connection);
$table = newUserDataTable($adapter);
$data = $table->getData($this->getRequest());
// echo json_encode($data);returnnewJsonModel($data);

Propose pull requests!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages