How marksalmon/laravel-datatables works
Laravel DataTables adapts collection, query-builder, and Eloquent data sources to the jQuery DataTables server-side AJAX protocol. The main workflow accepts table parameters, selects an engine, filters/orders/pages data, processes rows, and returns a JSON response; the package also builds client-side table markup and supports print and file exports. The core wiring is supported by the README and sampled engines/services; some unsampled factory and response details are represented only at the subsystem level.
Main entry points: DataTable.php Table Service · Datatables.php Engine Factory · Builder.php HTML Builder · BaseEngine.php Engine Base
Components 23
Laravel Entry
- Facade
src/Facades/Datatables.php - Engine Factory
src/Datatables.php - Table Service
src/Services/DataTable.php - DataTables Request
src/Request.php - Service Provider
src/DatatablesServiceProvider.php
Data Query
- Collection Engine
src/Engines/CollectionEngine.php - Eloquent Engine
src/Engines/EloquentEngine.php - Query Builder Engine
src/Engines/QueryBuilderEngine.php - Engine Base
src/Engines/BaseEngine.php
Response Processing
- Data Processor
src/Processors/DataProcessor.php - Row Processor
src/Processors/RowProcessor.php - Data Transformer
src/Transformers/DataTransformer.php
Table Presentation
- HTML Builder
src/Html/Builder.php - Column Definition
src/Html/Column.php - Table Parameters
src/Html/Parameters.php - Script Template
src/resources/views/script.blade.php - Print Template
src/resources/views/print.blade.php - Server Buttons
src/resources/assets/buttons.server-side.js - Package Config
src/config/config.php
Other components
- Application
- Data Source
- DataTables Client
- Export Providers
Connections 30
- Application → Facade: invokes
- Facade → Engine Factory: forwards calls
- Engine Factory → Collection Engine: selects engine
- Engine Factory → Eloquent Engine: selects engine
- Engine Factory → Query Builder Engine: selects engine
- Table Service → Engine Factory: creates tables
- Table Service → DataTables Request: reads parameters
- DataTables Client → DataTables Request: sends AJAX
- DataTables Request → Engine Base: supplies options
- Collection Engine → Engine Base: inherits behavior
- Eloquent Engine → Query Builder Engine: wraps query
- Query Builder Engine → Engine Base: inherits behavior
- Collection Engine → Data Source: reads collection
- Query Builder Engine → Data Source: queries records
- Engine Base → Data Processor: processes results
- Data Processor → Row Processor: builds row metadata
- Engine Base → DataTables Client: returns JSON
- Table Service → Data Transformer: maps export rows
- Table Service → Export Providers: requests exports
- Table Service → Print Template: renders preview
- Table Service → HTML Builder: builds table
- HTML Builder → Column Definition: defines columns
- HTML Builder → Table Parameters: encodes options
- HTML Builder → Script Template: renders script
- DataTables Client → Server Buttons: uses buttons
- HTML Builder → Package Config: reads defaults
- Service Provider → Engine Factory: registers service
- Service Provider → Script Template: loads views
- Service Provider → Server Buttons: publishes asset
- Export Providers → Table Service: provides export