PHPackages                             jurasm2/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. jurasm2/datagrid

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

jurasm2/datagrid
================

Official Bubo CMS Datagrid

0121PHP

Since Nov 9Pushed 11y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (2)Used By (1)

\#What is DataGrid

DataGrid control is a data bound list control that displays the items from datasource in a table. The DataGrid control allows you to select, sort, and manage these items.

**This is development version, it probably contains bugs and therefore it is NOT intended for production use.**

Keep in mind that things are **still in development**.

Feel free to suggest improvements.

\##Basic usage: It is required to provide mapping between DataGrid's column names and entity columns. This allows internal components (eg. sorting filtering) to work properly.

\####Doctrine 2 ######Doctrine 2 ORM - QueryBuilder:

```
$grid = new \DataGrid\DataGrid;

//prepare datasource
$dataSource = new \DataGrid\DataSources\Doctrine\QueryBuilder(
		$em->createQueryBuilder() //$em instanceof Doctrine\ORM\EntityManager
			->select('u.id, u.name, u.email, u.regTime, a.city, a.street') //columns to be used
			->from('Models\User', 'u') //master table
			->join('u.address', 'a') //joined table (one-to-one association)
);

//provide mapping betweeen DataGrid's column names and entity columns
$dataSource->setMapping(array(
	'id'		=> 'u.id',
	'name'		=> 'u.name',
	'email'		=> 'u.email',
	'time'		=> 'u.regTime',
	'city'		=> 'a.city',
	'street'	=> 'a.street',
));

//finally, set datasource to DataGrid
$grid->setDataSource($dataSource);

//now we're working with mapped fields
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('email', 'Email')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addColumn('street', 'Ulice')->addFilter();
$grid->addDateColumn('time', 'Datum registrace')->addDateFilter();

```

\####Dibi #####DibiFluent:

```
// Create a query
$df = new \DibiFluent(\dibi::getConnection());
$df->select('p.*')
->select('c.name')->as('city')
->from('%n', 'people', 'p')
->leftJoin('%n', 'cities', 'c')
->on('(p.[city_id] = c.[id])');

// Configure data source
$dataSource = new \DataGrid\DataSources\Dibi\Fluent($df);
$dataSource->setMapping(array(
'id' => 'p.ID',
'name' => 'p.name',
'mail' => 'p.mail',
'city' => 'c.name',
'registered' => 'p.registered',
));

// Configure data grid
$grid = new \DataGrid\DataGrid;
$grid->setDataSource($dataSource);

// Configure columns
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('mail', 'E-mail')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addDateColumn('date', 'Registrován')->addFilter();

```

\#####DibiDataSource:

```
// Create a query
$ds = \dibi::dataSource('SELECT p.*, c.[name] as city FROM [people] p LEFT JOIN [cities] c ON p.[city_id] = c.[id]');
// Create a data source
$dataSource = new \DataGrid\DataSources\Dibi\DataSource($ds);

// Configure data grid
$grid = new DataGrid;
$grid->setDataSource($dataSource);

// Configure columns
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('mail', 'E-mail')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addDateColumn('registered', 'Registrován')->addFilter();

```

\####PHP Array:

```
TODO

```

\##Todo

\####High priority:

- Latte renderer

\####Low priority:

- PHP Array wrapper (datasource)
- SelectBox formatting

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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/1c3bd858c17793e1f427a2560d844141c8e9b624043c7212298232f935e5cce6?d=identicon)[jurasm2](/maintainers/jurasm2)

---

Top Contributors

[![project-bubo](https://avatars.githubusercontent.com/u/5002351?v=4)](https://github.com/project-bubo "project-bubo (1 commits)")

### Embed Badge

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

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

###  Alternatives

[brightnucleus/custom-content

Config-driven WordPress Custom Content Definitions (Custom Post Types, Custom Taxonomies).

1016.1k](/packages/brightnucleus-custom-content)[humanmade/hm-tabs-block

Simple tab block for the WordPress block editor

182.2k](/packages/humanmade-hm-tabs-block)

PHPackages © 2026

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