Ako v nette ublaboo dataGride nastavit id pri edit
- Tommy7777
- Člen | 13
Zdravím, nedarí sa mi pristúpiť k dátam danej ponuky, ak to chcem editovať. Neviete kde by mohla byt chyba? Do url mi prida iba edit/ , bez id
public $onEdit = [], $onEditGallery = [];
public function createComponentGrid()
{
$grid = $this->gridFactory->create();
$grid->setPrimaryKey('id');
$grid->setDataSource($this->getDataSource());
$grid->addColumnText('image', 'Obrázek')
->setAlign('center')
->setTemplate(__DIR__ . '/templates/offersImage.latte');
$grid->addColumnText('titulek', 'Název');
$grid->addColumnText('objekt_typ_nabidky', 'Typ ponuky')->setReplacement($this->offersRepository->typNabitky);
$grid->addColumnText('objekt_typ', 'Druh')->setReplacement($this->offersRepository->druh);
$grid->addColumnText('cena', 'Cena s DPH ('.$currencySymbol.')' );
$grid->addColumnText('aktivni', 'Status')
->setAlign('center')
->setRenderer(function ($offer) {
$out = new Html();
if ($offer->aktivni == 1) {
$out->addHtml('<span class="badge badge-success">Aktivní</span>');
} else {
$out->addHtml('<span class="badge badge-primary">Neaktivní</span>');
}
return $out;
});
$grid->addAction('edit', '', 'Edit', ['id'])
->setIcon('edit');
$grid->addAction('gallery', '', 'Gallery', ['id'])
->setIcon('images');
}
public function handleEdit($offer_id)
{
$this->onEdit($offer_id);
}
Editoval Tommy7777 (21. 12. 2021 18:50)
- iGavrilo
- Člen | 32
Datagrid si uprav takto:
$grid->addAction('edit', '', 'Edit')->setIcon('edit');
A akciu v presenteri takto:
public function handleEdit($id)
{
$this->onEdit($id);
}
Primárny kľúč ktorý si určil datagridu sa ti do akcie automatický vygeneruje a však tuším že sa názov parametra musí zhodovať. Takto to používam ja a funguje to.
Kolega však používa tento spôsob. Fungujú oba a je na tebe ktorý si vyberieš.
$grid->addAction('hide', 'Active', 'activate!')
//->setIcon('')
->setTitle(function($item) {
return $item->active ? 'Zakázat' : 'Povolit';
})
->setRenderer(function($item) {
return Html::el('a')->class($item->active ? "btn btn-xs btn-danger ajax" : "btn btn-xs btn-success ajax")->setText($item->active ? 'Zakázat' : 'Povolit')->href($this->link("activate!", ["id" => $item->id]));
})
->setClass(function($item) {
return $item->active ? 'btn btn-xs btn-danger ajax' : 'btn btn-xs btn-success ajax';
});