Skip to content

Zhortein/datatable-bundle

Repository files navigation

Zhortein Datatable Bundle

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

Status

Early development. Not production-ready.

Goals

  • PHP-first datatable definitions.
  • PHP attributes.
  • Bootstrap-first rendering.
  • Twig templates.
  • Stimulus Ajax refresh.
  • Vanilla JavaScript.
  • Doctrine ORM provider.
  • Declarative actions.
  • Native Symfony translations.
  • Extensible provider architecture.

Requirements

  • PHP 8.4+
  • Symfony 8+
  • Composer 2+

Doctrine ORM is optional at package level, but required for Doctrine-backed datatables.

Installation

Installation instructions are documented in docs/installation.md.

Basic usage

Basic usage is documented in docs/basic-usage.md.

Expected direction:

<?php

declare(strict_types=1);

namespace App\Datatable;

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

#[AsDatatable(name: 'users')]
final class UserDatatable implements DatatableInterface
{
    public function buildDatatable(DatatableDefinition $definition): void
    {
        $definition
            ->setEntityClass(User::class)
            ->setTranslationDomain('user')
            ->addColumn('e.id', visible: false, sortable: false, searchable: false)
            ->addColumn('e.email')
            ->addColumn('e.displayName')
            ->addColumn('e.createdAt', searchable: false)
            ->addPermanentFilter('e.deletedAt', FilterOperator::IsNull)
        ;
    }
}

Expected Twig usage:

{{ zhortein_datatable('users') }}

With runtime options:

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

Examples

Documentation

Architecture decisions

Development

composer install
composer qa

With the local Docker tooling:

make installdeps
make qa

Quality requirements

The project must pass:

  • PHPUnit;
  • PHPStan at maximum level;
  • PHP-CS-Fixer with Symfony-oriented rules;
  • twigcs when Twig templates are present;
  • GitHub Actions CI.

License

This bundle is released under the MIT License.

About

A Symfony 8+ bundle for Bootstrap-first business datatables driven by PHP definitions, Twig rendering and Stimulus Ajax updates.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors