PHPackages                             zhortein/datatable-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. zhortein/datatable-bundle

ActiveSymfony-bundle[Database &amp; ORM](/categories/database)

zhortein/datatable-bundle
=========================

A Symfony 8+ bundle for Bootstrap-first business datatables driven by PHP definitions, with Twig rendering, Stimulus Ajax refresh, Doctrine provider, actions, filters and CSV/XLSX exports.

v0.2.0-alpha.1(3w ago)10[7 issues](https://github.com/Zhortein/datatable-bundle/issues)[5 PRs](https://github.com/Zhortein/datatable-bundle/pulls)MITPHPPHP &gt;=8.4CI failing

Since May 11Pushed 1w agoCompare

[ Source](https://github.com/Zhortein/datatable-bundle)[ Packagist](https://packagist.org/packages/zhortein/datatable-bundle)[ RSS](/packages/zhortein-datatable-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (28)Versions (9)Used By (0)

Zhortein Datatable Bundle
=========================

[](#zhortein-datatable-bundle)

A Symfony 8+ bundle for Bootstrap-first business datatables driven by PHP definitions.

Status
------

[](#status)

**Alpha Stage**. This bundle is under active development. The public API may change before the 1.0.0 release.

Requirements
------------

[](#requirements)

- **PHP**: 8.4+
- **Symfony**: 8.0+
- **Frontend**: Bootstrap 5 (CSS/JS), Symfony UX Stimulus, and AssetMapper.

Features
--------

[](#features)

- **PHP-first Definitions**: Declare your datatables as PHP classes with attributes.
- **Twig Rendering**: Render tables with a single Twig function: `{{ zhortein_datatable() }}`.
- **Ajax Fragments**: Seamless server-side updates using vanilla Stimulus.
- **Data Providers**: Native support for **Doctrine ORM** and **Array** providers.
- **Filtering**: Built-in global search and permanent backend filters.
- **Actions**: Declarative row and global actions with CSRF-aware non-GET support.
- **Exports**: Server-side CSV and optional XLSX exports.
- **Customization**: Flexible UI/UX customization via Twig blocks and themes.
- **Type Safety**: Automatic Doctrine type detection and typed cell rendering.

Installation Summary
--------------------

[](#installation-summary)

1. **Install the package**: ```
    composer require zhortein/datatable-bundle
    ```

> Note that there is no automatic recipe for this bundle for now.

2. **Register the bundle** (if not done by Flex) in `config/bundles.php`.
3. **Import routes**:

    ```
    # config/routes/zhortein_datatable.yaml
    zhortein_datatable:
        resource: '@ZhorteinDatatableBundle/config/routes.php'
    ```
4. **Expose the Stimulus controller**: Ensure `symfony/stimulus-bundle` is installed and the controller is enabled in `assets/controllers.json`.
5. **Bootstrap requirement**: Ensure Bootstrap 5 CSS and JS are loaded in your layout.

See [Installation Guide](docs/installation.md) for detailed instructions.

Minimal Example
---------------

[](#minimal-example)

### 1. Define your Datatable

[](#1-define-your-datatable)

```
namespace App\Datatable;

use App\Entity\User;
use Zhortein\DatatableBundle\Attribute\AsDatatable;
use Zhortein\DatatableBundle\Contract\DatatableInterface;
use Zhortein\DatatableBundle\Definition\DatatableDefinition;

#[AsDatatable(name: 'users')]
final class UserDatatable implements DatatableInterface
{
    public function buildDatatable(DatatableDefinition $definition): void
    {
        $definition
            ->setEntityClass(User::class)
            ->addColumn('e.id', visible: false)
            ->addColumn('e.email', label: 'Email')
            ->addColumn('e.createdAt', label: 'Created At', searchable: false)
        ;
    }
}
```

### 2. Render it in Twig

[](#2-render-it-in-twig)

```
{{ zhortein_datatable('users', { search: true }) }}
```

Documentation
-------------

[](#documentation)

- [Documentation Index](docs/index.md)
- [Installation](docs/installation.md)
- [Quick Start](docs/quick-start.md)
- [Providers Overview](docs/providers.md)
- [Doctrine Provider](docs/doctrine-provider.md)
- [Filters](docs/filters.md)
- [Actions &amp; Security](docs/actions.md)
- [Exports](docs/exports.md)
- [Theming &amp; Templates](docs/theming.md)
- [UI/UX &amp; Controls](docs/ui-ux.md)
- [Frontend Test Strategy](docs/frontend-tests.md)
- [Roadmap](docs/roadmap.md)

License
-------

[](#license)

MIT

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance77

Regular maintenance activity

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

2

Last Release

24d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/82563246?v=4)[David Renard](/maintainers/Zhortein)[@Zhortein](https://github.com/Zhortein)

---

Top Contributors

[![Zhortein](https://avatars.githubusercontent.com/u/82563246?v=4)](https://github.com/Zhortein "Zhortein (241 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

bootstrapbootstrap5datatabledatatablesdatatables-serversidedoctrinedoctrine-ormphpphp-attributesphp8stimulusjssymfonysymfony-bundlesymfony8twigsymfonybundletwigsymfony-uxexportdoctrinexlsxcsvgridajaxbootstrapdatagriddatatablestimulus

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/zhortein-datatable-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/zhortein-datatable-bundle/health.svg)](https://phpackages.com/packages/zhortein-datatable-bundle)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M370](/packages/easycorp-easyadmin-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M195](/packages/sulu-sulu)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M506](/packages/shopware-core)[chameleon-system/chameleon-base

The Chameleon System core.

1027.9k4](/packages/chameleon-system-chameleon-base)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9017.2k55](/packages/open-dxp-opendxp)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1715.6k12](/packages/2lenet-crudit-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
