<?php
/**
* Example 01 — Basic Table
*
* Shows how to create a simple data table with column selection,
* sorting, pagination, and AJAX server-side loading.
*
* Prerequisites:
* - A class implementing Italix\Contracts\TableMeta (e.g. from italix/orm)
* - The Tabulator JS/CSS loaded in your page
*/
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use Italix\DataSets\DataSet;
use Italix\DataSets\Drivers\Tabulator\TabulatorDriver;
// ============================================================================
// Assume $usersTable is a TableMeta describing a "users" table with columns:
// id (INTEGER), name (VARCHAR), email (VARCHAR), role (VARCHAR),
// created_at (TIMESTAMP)
// ============================================================================
$ds = new DataSet($usersTable);
// Pick which columns to show (and in what order)
$ds->columns(['name', 'email', 'role', 'created_at']);
// Column-level configuration
$ds->column('name')
->label('Full Name')
->sortable(true)
->width('200px');
$ds->column('email')
->sortable(true)
->searchable(true);
$ds->column('role')
->label('User Role')
->sortable(true)
->h_align('center');
$ds->column('created_at')
->label('Registered')
->sortable(true)
->formatter('datetime', ['outputFormat' => 'YYYY-MM-DD']);
// Default sort
$ds->default_sort('created_at', 'desc');
// AJAX: load data from server
$ds->ajax_url('/api/users')
->ajax_method('GET');
// Pagination
$ds->per_page(25)
->page_sizes([10, 25, 50, 100]);
// Display options
$ds->id('users-table')
->css_class('table-striped')
->height('600px')
->layout('fitColumns');
// ---- Render ----------------------------------------------------------------
$driver = new TabulatorDriver();
// Option A: Get the JSON config (for embedding in a JS variable)
$json = $ds->to_json($driver);
// Option B: Get a complete JS snippet that creates the table
$script = $driver->render_script($ds, '#users-table', 'usersTable');
?>
<!-- In your HTML template -->
<link href="https://unpkg.com/tabulator-tables/dist/css/tabulator.min.css" rel="stylesheet">
<script src="https://unpkg.com/tabulator-tables/dist/js/tabulator.min.js"></script>
<div id="users-table"></div>
<script>
<?= $script ?>
</script>