Odkazy v komponentě a DataGrid

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JonasA
Člen | 3
+
0
-

Ahoj,
nedaří se mi rozchodit akce v DataGridu v komponentě: v presenteru vytvořim (v továrničce) komponentu, jejíž součástí je taky komponenta – DataGrid – a tam přichází problém, při přidání akce s odkazem ve stylu $grid->addAction('Edit', 'Item:edit', .. ) dostanu vyjímku Component with name 'Item' does not exist.. Jestli jsem správně pochopil generování odkazů v komponentách, tak by mělo být stejný jako v presenteru, takže problém je někde v něm, $this->link('Item:edit') totiž vyhazuje stejnou chybu ($this->presenter->link() jde bez problémů). Nevíte kde by mohl být problém?
Díky

Honza Kuchař
Člen | 1662
+
0
-

Generování odkazů funguje vždy relativně. Tzn. pokud zavoláš link nad objektem komponenty, tak dostaneš odkaz na nějakou akci té komponenty. Pokud opravdu potřebuješ vygenerovat odkaz na nějakou akci v přesenteru, tak musíš použít $this->presenter->link(); Nebo pokud chceš všechny akce směřovat na presenter, tak přepsat metodu link. (viz TabControl)

JonasA
Člen | 3
+
0
-

Díky, kouknu se jestli se dá nějak donutit DataGrid aby generoval odkazy do presenteru, přepisovat link se mi moc nechce.

Mombic
Člen | 3
+
0
-

Mám bohužel stejný problém ve stejné situaci – presenter->komponenta->datagrid. Jak efektivně docílit toho, aby akce z datagridu odkazovaly i na jiné presentery?

Děkuji za každou pomoc!

Filip Procházka
Moderator | 4668
+
+1
-

Co takhle?

$this->getPresenter()->link(':Jiny:Presenter:akce');
Mombic
Člen | 3
+
0
-

Ano ano, samozřejmě o tomto způsobu obecně vím, však mám pocit, že „akce“ v DataGridu ho nedovolují nijak využít. Myslím, že je tam pouze

$this->control->link($dest);

, a proto jsem se zajímal, zda existuje nějaký jiný způsob či lepší finta, než přepisovat funkce DataGridu pro generování linku z metody

$grid->addAction();

.