PHPackages                             frosty22/grido-ext - 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. frosty22/grido-ext

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

frosty22/grido-ext
==================

Extension for Grido, automated factory from entities based on annotations.

146PHP

Since Sep 9Pushed 12y ago1 watchersCompare

[ Source](https://github.com/frosty22/GridoExt)[ Packagist](https://packagist.org/packages/frosty22/grido-ext)[ RSS](/packages/frosty22-grido-ext/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

GridoExt
========

[](#gridoext)

Továrnička pro datagrid Grido, která na základě vlastních anotací u entit vytváří generovaný datagrid pro danou query. Založeno na super datagridu Grido:

Z hlediska API je zde podstatný pouze objekt GridoFactory, který je základní kámen této komponenty a vytváří instanci komponenty Grido, která již může být poté vykreslena. Tato továrnička přijímá GridoExt\\Mapper, který přijímá QueryBuilder.

> Jsem člověk líný a razím pravidlo: "Čím méňě kódu pro implementaci tím lépe.", tudíž z valné většiny nejsou potřeba žádné výchozí anotace (Format, Type, ...), pouze slouží pro přepsání výchozího chování.

Mapping
-------

[](#mapping)

Součástí knihovny je několik objektů reprezentující anotace daných entit:

> Základem této továrničky je EntityMetaReader a Ale, viz závislosti v composer

- Format - umožňuje definovat vlastní formát pro vykreslení hodnot dané property
- Type - umožňuje definovat datový typ pro hodnotu - vhodné pro kolekce
- Select - slouží k vytvoření pole, které se namapuje na hodnoty

Příklad
-------

[](#příklad)

Příklad entity:

```
use EntityMetaReader\Mapping as EMR;
use Doctrine\ORM\Mapping as ORM;
use GridoExt\Mapping as GRID;

class Product extends Ale\Entities\BaseEntity {

	/**
	 * @EMR\Name("Název produktu")
	 * @GRID\Format(empty="nevyplněno")
	 * @ORM\Column(type="string")
	 * @var string
	 */
	protected $name;

	/**
	 * @EMR\Name("Expirace produktu")
	 * @EMR\Access(read="admin")
	 * @GRID\Format("j.n.Y H:i")
	 * @ORM\Column(type="datetime")
	 * @var DateTime
	 */
	protected $expire;

	/**
     * @EMR\Name("Jméno uživatele")
     * @GRID\Type(type="select", mappedBy="name")
     * @ORM\ManyToOne(targetEntity="User")
     * @var User
     */
    protected $user;

    /**
     * @EMR\Name("Stav produktu")
     * @GRID\Select(mapping={1 = 'Schválen', 2 = 'Zamítnut', 3 = 'Čeká'})
     * @ORM\Column(type="smallint")
     * @var int
     */
    protected $state;

}
```

Jednoduché vytvoření datagridu, například pomocí továrničky:

```
class FooPresenter extends Presenter {

	/**
	 * @var \GridoExt\GridoFactory
	 */
	protected $gridoFactory;

	protected function createComponentProductGrid($name)
	{
		// Vytvoření query pomocí QueryBuilderu
		$qb = $this->entityManager->createQueryBuilder()
			->select("product", "order", "category")  // Slouží zároveň i jako definice, entit které se mají zobrazit v gridu
			->from("Product", "product")
			->leftJoin("product.order", "order")
			->leftJoin("product.category", "category")
			->orderBy("product.created", "DESC"); // Defaultní řazení výsledků, datagridu může přepsat

		$map = new \GridoExt\Mapper($qb); // Vytvoření mapperu pro továrničku

		// Některé sloupce můžeme chtít v konkrétním gridu skýt - Skrytí sloupců "sale", "price"
		$map->hide('Entity\Product', array('sale', 'price'));

		// Můžeme chtít přidat odkaz na hodnotu ve sloupci - přidá odkaz na sloupec "name" vedoucí na "detail" s parametrem ID
		$map->link('Entity\Product', 'name', function($product){ return $this->link("detail", $product->id); });

		// Případně můžeme vnutit i zde vlastní render (pokud nechceme globálně přes anotace entity)
		$map->addCustomRender('Entity\Product', 'price', function($product){ return $product->price . ",-"; });

		$grido = $this->gridoFactory->create($map); // Vytvoření instance Grido pomocí továrničky

		$grido->addActionHref("foo", "Foo"); // Vytvoření odkazu na actionFoo a předání parametru product
		$grido->addActionDetail(); // Zkratka pro vytvoření odkazu na actionDetail (příslušná barva, ikona tlačítka)
		$grido->addActionEdit();   // Zkratka pro vytvoření odkazu na actionEdit (příslušná barva, ikona tlačítka)
		$grido->addActionRemove(); // Zkratka pro vytvoření odkazu na handleRemove (příslušná barva, ikona tlačítka, JS potvrzení)

		return $grido;
	}

	public function actionFoo(Product $product)
	{
	   ...
	}

	public function actionDetail(Product $product)
	{
	   ...
	}

	public function actionEdit(Product $product)
	{
	   ...
	}

	public function handleRemove(Product $product)
	{
	   ...
	}

}
```

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

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://avatars.githubusercontent.com/u/905993?v=4)[Ledvinka Vít](/maintainers/frosty22)[@frosty22](https://github.com/frosty22)

---

Top Contributors

[![frosty22](https://avatars.githubusercontent.com/u/905993?v=4)](https://github.com/frosty22 "frosty22 (20 commits)")

### Embed Badge

![Health badge](/badges/frosty22-grido-ext/health.svg)

```
[![Health](https://phpackages.com/badges/frosty22-grido-ext/health.svg)](https://phpackages.com/packages/frosty22-grido-ext)
```

PHPackages © 2026

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