datagrid pre notorm a nette2
- dcepelik
- Člen | 36
Ahoj,
něco takového právě vyvíjím pro jeden svůj projekt. Hodil jsem ti to na GitHub: https://github.com/dcepelik/Grid.
Příklad použití:
<?php
public function createComponentGrid()
{
$grid = new GridControl;
$grid->addLink('delete %id', 'Delete'); // "akce" (link) na úrovni řádku
// hromadné akce
$grid->addAction('delete', 'Delete', function($ids, $grid) {
// obsluha akce (v poli $ids dostaneš ID zvolených záznamů)
});
// definice sloupců, první argument je název sloupce z tabulky
$grid->addColumn('title', 'Title')->setLink('edit %id');
$grid->addColumn('parent', 'Parent Category')->setEmptyValue('Root category');
$grid->addBool('visible', 'Visible');
// výchozí řazení, nastavení DataSource
$grid->defaultOrder = array('parent', 'title');
$grid->dataSource = $this->categoryTable->fetchAll()->toDataSource();
return $grid;
}
?>
Na dokumentaci bohužel není čas. Umí to vícenásobné řazení, filtry, linky na úrovni řádků a hromadné akce. Běží to na dibi 2.
Má to několik nectností; za prvé to nevyužívá renderer, ale šablonu (což je v mnoha ohledech paradoxně výhoda, záleží na tvých potřebách) a pokládá to zbytečně jeden dotaz navíc pro zjištění počtu položek pro Paginator. A pak spoustu dalších, o kterých nevím, nebo na které si teď nevzpomenu.
Ještě jednou: není to hotové. Ale třeba ti to pomůže.
- David Ďurika
- Člen | 328
dcepelik napsal(a):
Ale třeba ti to pomůže.
cav, asi nie, lebo ja to potrebujem na NotOrm…
- dcepelik
- Člen | 36
Ahoj,
to jsem přehlédl.
NotORM jsem také používal, ale po čase jsem zjistil, že dibi mi vyhovuje více. Na menších projektech byl NotORM vysvobození, u větších věcí, kde potřebuji mít nad dotazem úplnou kontrolu, mi nesedl. (Němý šepot zkus dibi, zkus dibi, …)
Pokud bys nenašel nic vhodnějšího, neměl by být problém Grid upravit
pro NotORM. Místo DibiDataSource
bys použil
NotORM_Result
, popř. Nette\Database\Table\Selection
a
během pěti minut bys fungoval. Ready-made řešení to ale není.