1. Go to this page and download the library: Download esolutions/datatable 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/ */
esolutions / datatable example snippets
// Modules/Plan/DataTables/PlanDataTable.php
use Esolutions\Datatable\Table\{Button, ButtonBuilder, Column, ColumnBuilder, Filter, FilterBuilder};
use Esolutions\Datatable\Traits\PaginationSystemTrait;
trait PlanDataTable
{
use PaginationSystemTrait;
protected function getTableConfig(): array
{
return [
'page_title' => __('plans title page'),
'table_title' => __('plans title table'),
'table_name' => 'plans',
];
}
protected function getHeaderButtons(): array
{
return (new ButtonBuilder())
->addButton(Button::newButton())
->addButton(Button::refreshButton())
->addButtonGroup([Button::exportButton()])
->getButtons();
}
protected function getColumns(): array
{
return (new ColumnBuilder())
->addColumn(Column::make('name')->label('Nombre'))
->addColumn(Column::make('price')->label('Precio')->alignRight()->width('100px'))
->addColumn(Column::isActive())
->addColumn(Column::actions())
->getColumns();
}
protected function getFilters(): array
{
return (new FilterBuilder())
->addFilter(Filter::makeInput('search')->label('Buscar')->cssClass('col-12'))
->getFilters();
}
}
// Modules/Plan/Http/Controllers/PlanController.php
use Esolutions\Datatable\Dialog\DialogAction;
use Esolutions\Datatable\Dialog\Requests\ActionRequest;
use Esolutions\Laravel\Auth\AuthHelper;
use Esolutions\Laravel\Http\ApiResponse;
class PlanController extends Controller
{
use PlanDataTable;
// GET /plans/record/{id}
public function record($id) { ... }
// POST /plans/store
public function store(PlanRequest $request) { ... }
// GET /plans/record-active/{id}
public function recordActive($id)
{
$record = Plan::findOrFail($id);
return DialogAction::getActiveRecordActionData($record, 'name', 'plan');
}
// POST /plans/store-active
public function storeActive(ActionRequest $request)
{
$password = $request->input('password');
if ($password && !AuthHelper::checkPassword($password)) {
return ApiResponse::error('La contraseña es incorrecta', 403);
}
$record = Plan::findOrFail($request->input('id'));
$record->update(['is_active' => !$record->is_active]);
return ApiResponse::success($record->is_active ? 'Activado' : 'Desactivado');
}
// GET /plans/record-delete/{id}
public function recordDelete($id)
{
$record = Plan::findOrFail($id);
return DialogAction::getDeleteRecordActionData($record, 'name', 'plan');
}
// POST /plans/delete
public function storeDelete(ActionRequest $request)
{
$password = $request->input('password');
if ($password && !AuthHelper::checkPassword($password)) {
return ApiResponse::error('La contraseña es incorrecta', 403);
}
Plan::findOrFail($request->input('id'))->delete();
return ApiResponse::success('Plan eliminado');
}
}
DialogAction::getDeleteRecordActionData(
record: $record,
nameField: 'name', // campo que muestra el nombre en el diálogo
type: 'plan', // texto del tipo de registro
verifyPassword: false // true = el frontend muestra campo de contraseña
);
use Esolutions\Datatable\Table\Column;
Column::make('name')->label('Nombre')
Column::make('price')->label('Precio')->alignRight()->width('100px')
Column::make('date')->label('Fecha')->alignCenter()
Column::isActive() // columna estándar de estado activo/inactivo
Column::actions() // columna estándar de botones de acción
use Esolutions\Datatable\Table\ColumnBuilder;
$columns = (new ColumnBuilder())
->addColumn(Column::make('name')->label('Nombre'))
->addColumn(Column::isActive())
->addColumn(Column::actions())
->getColumns();
use Esolutions\Datatable\Table\FilterBuilder;
$filters = (new FilterBuilder())
->addFilter(Filter::makeInput('search')->label('Buscar')->cssClass('col-24 col-sm-12'))
->getFilters();
use Esolutions\Datatable\Table\{Button, ButtonBuilder};
$buttons = (new ButtonBuilder())
->addButton(Button::newButton())
->addButton(Button::refreshButton())
->addButtonGroup([Button::exportButton()])
->getButtons();
use Esolutions\Datatable\Traits\PaginationSystemTrait;
// o
use Esolutions\Datatable\Traits\PaginationTenantTrait;
use Esolutions\Datatable\Exports\GenericReportExport;
use Maatwebsite\Excel\Facades\Excel;
public function exportRecords(Request $request)
{
$records = Plan::all()->map(fn($r) => [$r->name, $r->price])->toArray();
return Excel::download(
new GenericReportExport(
data: $records,
headings: ['Nombre', 'Precio'],
title: 'Reporte de Planes'
),
'reporte_planes.xlsx'
);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.