PHPackages                             geniv/nette-grid-table - 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. [Framework](/categories/framework)
4. /
5. geniv/nette-grid-table

ActiveLibrary[Framework](/categories/framework)

geniv/nette-grid-table
======================

Grid table component for Nette Framework

v1.4.1(6y ago)0876MITPHPPHP &gt;=7.0

Since Apr 9Pushed 6y ago2 watchersCompare

[ Source](https://github.com/geniv/nette-grid-table)[ Packagist](https://packagist.org/packages/geniv/nette-grid-table)[ RSS](/packages/geniv-nette-grid-table/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (5)Versions (39)Used By (0)

Grid table
==========

[](#grid-table)

inspired by:

Installation
------------

[](#installation)

```
$ composer require geniv/nette-grid-table
```

or

```
"geniv/nette-grid-table": "^1.4"
```

require:

```
"php": ">=7.0",
"nette/application": ">=2.4",
"nette/caching": ">=2.5",
"nette/component-model": ">=2.3",
"nette/utils": ">=2.4",
"geniv/nette-general-form": ">=1.0"
```

Include in application
----------------------

[](#include-in-application)

neon configure services:

```
services:
    - GridTable\GridTable
```

usage:

```
protected function createComponentGridTable(GridTable $gridTable, VisualPaginator $visualPaginator): GridTable
{
    $visualPaginator->setPathTemplate(__DIR__ . '/templates/visualPaginator.latte');
    $gridTable->setPaginator($visualPaginator->getPaginator(), $visualPaginator);
    $gridTable->setItemPerPage($this->getDatabaseLimit());
//    $gridTable->setPage((int) 4);
//    $gridTable->setSortable(false);

    $gridTable->setTemplatePath(__DIR__ . '/templates/gridTable.latte');
    $gridTable->setSource($this->getSource());
//    $gridTable->setCacheId('123'.$neco);
//    $gridTable->setSource(new ArrayDataSource($this->configureSection->getListSection()));
//    $gridTable->setSource(new ApiDataSource(function ($limit, $offset) {
//        return $this->apiModel->getListApi($limit, $offset);
//    }, 'totalCount', 'result'));

    $pk = 'id';
    $gridTable->setPrimaryKey($pk);
    $gridTable->setDefaultOrder(['id' => 'asc']);
    $gridTable->setDefaultOrder(['name+0', 'id asc']);

    $gridTable->addColumn($pk, '#');

    $column = $gridTable->addColumn('username', 'Jmeno');
    $column->setOrdering(true);
    $column->setData(['foo' => 'bar']);

//        $column->setCallback(function ($data, Column $context) { return $data; });
    $column->setCallback(function ($data) { return $data; });

    $column = $gridTable->addColumn('username', 'Jmeno');
    $column->setTemplatePath(__DIR__ . '/templates/gridTableCheckbox.latte');

    // edit
    $gridTable->addButton('content-grid-table-edit')
        ->setLink($this->presenterName . ':edit', ['idSection' => $this->idSection, 'id' => '%id', null])
        ->setClass('edit-class')
        ->setData(['svg' => self::SVG_USE_EDIT])
        ->setPermission($this->idSection, 'edit');
//        ->setData($configure);

    // delete
    $gridTable->addButton('content-grid-table-delete')
        ->setLink($this->presenterName . ':delete', ['idSection' => $this->idSection, 'id' => '%id'])
        ->setClass('btn btn-delete')
        ->setData(['svg' => self::SVG_USE_DELETE])
        ->setPermission($this->idSection, 'delete')
        ->setConfirm('content-grid-table-delete-confirm')
        ->setCallback(function (array $data, Button $context) { return $data; });

    return $gridTable;
}
```

##### Drivers:

[](#drivers)

- Dibi IDataSource instance (native)
- DibiDataSource($data)
- ArrayDataSource(array $data)
- FinderDataSource(Finder $finder)
- ApiDataSource(callable $function($limit, $offset){ return ApiCall($limit, $offset); }, 'totalCount', 'result')

##### class GridTable

[](#class-gridtable)

```
cleanCache($name = 'grid')
setTemplatePath(string $path)
setSource(IDataSource $source): self
setSourceLimit(int $limit, int $offset = 0): self
setItemPerPage(int $itemPerPage, bool $exception = false): self  - probably load data from session
setPage(int $page, bool $exception = false)
setPaginator(IComponent $visualPaginator = null, callable $callback = null): self
setPaginatorRange(array $range): self
setSortable(bool $state): self
isSortable(): bool
setPrimaryKey(string $pk): self
setDefaultOrder(array $order): self
addButton(string $caption): Button
addColumn(string $name, string $header = null): Column

onSelectRow(array $array)
onColumnOrder(string $column, string|null $direction)
onSelectFilter(string $column, string $filter)
onSelectPaginatorRange(int $value)
```

##### class Column

[](#class-column)

```
setOrdering(bool $ordering = true): self
setOrderingBy(string $column): self
setData(array $data): self
// internal variable: $column, $value, $data + custom over setData([])
setCallback(callable $callback): self  -  function ($data, Column $context) { return $data[$context->getName()]; }
setTemplatePath(string $path, array $data = []): self
setFormatDateTime(string $format): self
setFormatBoolean(): self
setFormatString(string $format): self
//setFilter(array $values): self
```

##### class Button

[](#class-button)

```
setCaption(string $caption): self
setLink(string $link, array $arguments = []): self
setUrl(array $arguments = []): self
setConfirm(string $text): self
setPermission(string $resource, string $privilege): self
setClass(string $class): self
setData(array $data): self
setCallback(callable $callback): self  -  function ($data, Button $context) { return $data[$context->getName()]; }
```

set page in external call:

```
$this['gridTable']->setPage((int) $page);
```

usage:

```
add

{control gridTable}
```

usage with `Multiplier`:

```
public function createComponentGridTableMultiplier(GridTable $gridTable): Multiplier
{
    return new Multiplier(function ($index) use ($gridTable) {
        $gridTable = clone $gridTable;

        $source = clone $this->getSource();
        // ...

        return $gridTable;
    });
}
```

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity70

Established project with proven stability

 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.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~46 days

Total

37

Last Release

2348d ago

PHP version history (2 changes)v1.0.0PHP &gt;=7.0.0

v1.2.0PHP &gt;=7.0

### Community

Maintainers

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

---

Top Contributors

[![geniv](https://avatars.githubusercontent.com/u/563659?v=4)](https://github.com/geniv "geniv (196 commits)")

---

Tags

nettegridtablegeniv

### Embed Badge

![Health badge](/badges/geniv-nette-grid-table/health.svg)

```
[![Health](https://phpackages.com/badges/geniv-nette-grid-table/health.svg)](https://phpackages.com/packages/geniv-nette-grid-table)
```

###  Alternatives

[ublaboo/datagrid

DataGrid for Nette Framework: filtering, sorting, pagination, tree view, table view, translator, etc

2972.0M24](/packages/ublaboo-datagrid)[o5/grido

Grido - DataGrid for Nette Framework

87292.1k4](/packages/o5-grido)[kdyby/autowired

Syntax sugar for working with services in Nette Framework

30910.1k13](/packages/kdyby-autowired)[nette/web-project

Nette: Standard Web Project

10992.8k](/packages/nette-web-project)[nasext/dependent-select-box

Dependent Select Box for Nette Framework.

21268.2k2](/packages/nasext-dependent-select-box)[nextras/form-components

Form components for Nette Framework.

10249.1k](/packages/nextras-form-components)

PHPackages © 2026

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