Problém s odkazováním z komponenty do Presenteru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Sekyscz
- Člen | 10
Ahoj, řeším problém … mám DataGrid ( používám ublaboo ) a mám tam GroupAction, kdy si označím třeba 3 řádky z té tabulky, zvolím tu akci a teď bych potřeboval přesměrovat do šablony nějakého Presenteru. Tento DataGrid mám napsaný v komponentě a když to napíšu takhle:
$grid->addGroupAction('Rezervovat')->onSelect[] = [$this, 'Reservation:data'];
Tak to řve, že to nezná tu „komponentu“ Reservation. Taky bych chtěl nějak předat, jaké že řádky si to uživatel vybral. Jak na to ?
- duke
- Člen | 650
Nedoporučuji vyvolávat přesměrování tímto způsobem z komponent. Přesměrování je zodpovědností presenteru a doporučuji tedy spíše vytvořit novou událost ve tvé komponentě, na kterou bude presenter reagovat přesměrováním. Tj. např. takto:
// událost v komponentě (která je potomkem Nette\Object):
public $onReserved = [];
// po vytvoření $grid:
$grid->addGroupAction('Rezervovat')->onSelect[] = [$this, 'handleReserve'];
public function handleReserve($items)
{
$this->onReserved($items);
}
// presenter:
$this['fooComponent']->onReserved[] = function ($items) {
$this->redirect("Presenter:action", [$items]);
}