Datagrid akce, vytvoření odkazu
- ufik
- Člen | 14
Zdravím, potřeboval bych vytvořit odkaz v datagridu, kde si předám ještě parametr s ID, ale vůbec netušim jak toho dosáhnout.
$grid->addAction('Nový', 'AdminNews:addNews', Html::el('span')->class('icon icon-new'), $useAjax = FALSE, $type = DataGridAction::WITHOUT_KEY);
AdminNews:addNews a zde potřebuji ještě předat ID.
Děkuji za každou odpověď.
- DocX
- Člen | 154
Vím co tím myslíš.
Tohle datagrid sám o sobě neumí (musel by si upravit funkci https://github.com/…idAction.php#L71
třeba tak aby sis do destination
mohl dát pole a pak to při
volání ̀control->link` nějak rozdělit, třeba index 0 jako adresu a
zbytek argumenty)
Nicméně tvůj problém bys mohl nejspíš vyřešit tak, že to ID záznamu, ke kterému máš datagrid, budeš ukládát v persistent parametru. Samozřejmě tenhle persistent parametr budeš muset mít i na presenteru který akcí voláš, takže to pořešit přes nějaké zdědění ;)
- Lopo
- Člen | 277
a co tak vyuzit onActionRender ?
napr:
createComponentGridList() {
$grid->addActionColumn('Akcie');
$grid->addAction('edit', 'this');
$grid->getRenderer()->onActionRender[]=array($this, 'gridListOnCellRendered');
}
public function gridListOnCellRendered(Html $cell, $column)
{
if ($cell->title=='edit') {
$cell->id=$column['id'];
$cell->href=NULL;
$cell->addClass('update-item icon icon-edit');
$cell->onClick="$('#dialog-form').dialog('option', 'dlgvals', { id: ".$column['id'].", kanal: '".$column['name']."'}); $('#dialog-form').dialog('option', 'nop', 'update'); $('#dialog-form').dialog('open');";
$cell->style="cursor: pointer";
}
return $cell;
}
je to kus kodu z real aplikacie pouzivajucej jQueryUI Dialog, tj uprav si to podla potreby – hlavne asi href a onclick