Ublaboo Datagrid – export renderer
- Šaman
- Člen | 2658
Ahoj, potřebuji v Datagridu mít vlastní renderer (zkrácení nějakého sloupce s dlouhou hodnotou), ale v exportu tohle zkracování nechci. Je možné definovat buď dva různé renderery (pro zobrazení a jiný pro export), nebo v jednom rendereru zjistit, jestli právě vytvářím export, či ne? Díky.
- Pavel Janda
- Člen | 977
@Šaman Určitě jo. Pro export můžeš definovat zvlášť sloupce, viz https://ublaboo.org/datagrid/export:
$columnName = new Ublaboo\DataGrid\Column\ColumnText($grid, 'name', 'name', 'Name');
$columnEven = (new Ublaboo\DataGrid\Column\ColumnText($grid, 'name', 'even', 'Even ID (yes/no)'))
->setRenderer(function($item) { return $item['id'] % 2 ? 'No' : 'Yes'; });
$grid->addExportCsv('Csv export', 'examples.csv')
->setTitle('Csv export')
->setColumns([
$columnName,
$columnEven
]);
Takže být tebou udělám nějakou factory na všechny sloupce a ty si předáš jak do gridu tak do exportu. Akorát u exportu bude místo zkráceného sloupce sloupec jiný, nezkrácený.
- kajinek32
- Člen | 35
A kdyby někdo hledal syntaxi, jak řešit OnExport, tak příklad tady (snad je správně :))
(řešil jsem situaci, kdy v poli pro e-mail máme standardně i nějaký balast (ikonky, apod)
$grid->onExport[] = function($grid){
$grid->getColumn("user_email")->setRenderer(function($row) {
return $row->user_email;
});
};