PHPackages                             jfsimon/datagrid - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. jfsimon/datagrid

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jfsimon/datagrid
================

A PHP datagrid component

152814[1 PRs](https://github.com/jfsimon/datagrid/pulls)PHP

Since Jul 4Pushed 9y ago3 watchersCompare

[ Source](https://github.com/jfsimon/datagrid)[ Packagist](https://packagist.org/packages/jfsimon/datagrid)[ RSS](/packages/jfsimon-datagrid/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

A datagrid component for PHP [![Build Status](https://camo.githubusercontent.com/3688a2fba60069890a7642ebe3455c6c16f1821671b7df0d81f85491db80f325/68747470733a2f2f7472617669732d63692e6f72672f6a6673696d6f6e2f64617461677269642e706e67)](https://travis-ci.org/jfsimon/datagrid)
================================================================================================================================================================================================================================================================================

[](#a-datagrid-component-for-php-)

The main goal of this component is to render a result set from any data source as an HTML table with sorting and filtering capabilities (ideal for backends). This component aims to be framework-agnostic and provide bindings for most used PHP frameworks.

- [Documentation summary](/doc/01_summary.md)
- [Development status](/doc/02_development_status.md)
- [Get started](/doc/03_get_started.md)
- [License MIT](/LICENSE)

To see the component in action, you can check accptance tests:

- [Data tests](/tests/Jfsimon/Datagrid/Tests/Acceptance/Data/DataTest.php)
- [Label tests](/tests/Jfsimon/Datagrid/Tests/Acceptance/Label/LabelTest.php)
- [Actions tests](/tests/Jfsimon/Datagrid/Tests/Acceptance/Actions/ActionsTest.php)

---

Create CRUD actions:

```
$actions = Actions::enable()
    ->addGlobalRoute('create', 'beatle_create')
    ->addEntityRoute('read', 'beatle_read', array('beatle' => 'slug'))
    ->addEntityRoute('update', 'beatle_update', array('beatle' => 'slug'))
    ->addEntityRoute('delete', 'beatle_delete', array('beatle' => 'slug'))
;
```

1 - Usage with custom data:

```
$beatles = array(
  array('slug' => 'john',    'name' => 'John Lenon',       'birthday' => new \DateTime('1940-10-09'), 'alive' => false),
  array('slug' => 'paul',    'name' => 'Paul McCartney',   'birthday' => new \DateTime('1942-06-18'), 'alive' => true),
  array('slug' => 'georges', 'name' => 'Georges Harrison', 'birthday' => new \DateTime('1943-02-25'), 'alive' => false),
  array('slug' => 'ringo',   'name' => 'Ringo Starr',      'birthday' => new \DateTime('1940-07-07'), 'alive' => true),
);
$schema = Schema::create()
    ->add('name', 'string', array('label' => 'Member name')
    ->add('birthday', 'datetime', array('time_format' => \IntlDateFormatter::NONE))
    ->add('alive', 'boolean', array('label' => 'Still alive?', 'false_value' => 'no more :('))
;
$factory = new Factory();
$grid = $factory->createGrid(new Collection($beatles), array('schema' => $schema, 'actions' => $actions));
echo  $this->getTwig()->render('{{ datagrid(grid) }}', array('grid' => $grid));
```

2 - Usage with Doctrine:

```
$factory = new DoctrineFactory($em);
echo $factory
    ->createGrid(new Collection($em->findAll('Beatle')), array('actions' => $actions))
    ->render(new TwigRenderer($twig, 'beatles.html.twig'));
```

Both will render:

Member nameBirthdayStill alive?[Create](/beatles/create)John LenonOct 9, 1940no more :([Read](/beatles/read/john) [Update](/beatles/update/john) [Delete](/beatles/delete/john)Paul McCartneyJun 18, 1942yes[Read](/beatles/read/paul) [Update](/beatles/update/paul) [Delete](/beatles/delete/paul)Georges HarrisonFeb 25, 1943no more :([Read](/beatles/read/georges) [Update](/beatles/update/georges) [Delete](/beatles/delete/georges)Ringo StarrJul 7, 1940yes[Read](/beatles/read/ringo) [Update](/beatles/update/ringo) [Delete](/beatles/delete/ringo)

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/cc20a7b538ad8dae3b5bff6e7b45978f89a0f8a97b990b04d78e62e460eb1005?d=identicon)[jfsimon](/maintainers/jfsimon)

---

Top Contributors

[![jfsimon](https://avatars.githubusercontent.com/u/119407?v=4)](https://github.com/jfsimon "jfsimon (50 commits)")[![yohang](https://avatars.githubusercontent.com/u/608984?v=4)](https://github.com/yohang "yohang (2 commits)")

### Embed Badge

![Health badge](/badges/jfsimon-datagrid/health.svg)

```
[![Health](https://phpackages.com/badges/jfsimon-datagrid/health.svg)](https://phpackages.com/packages/jfsimon-datagrid)
```

PHPackages © 2026

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