Linkování na akci

- weckho
- Člen | 94
Ahoj,
mám v aplikaci zprávy, u každé zprávy mám odkaz na smazání. Odkaz linkuji jako:
{link Zpravy:delete, $zprava->id}
V ZpravyPresenter.php mám actionDelete(). Odkaz však nefunguje, když nad něj najedu myší, píše stavový řádek error: No route for Zpravy:delete(id=x).
Musím vytvářet routy také pro akce? Nebo mám odkaz vytvořen nějak špatně?
Díky

- weckho
- Člen | 94
Díky, po úpravě funguje:
{plink Delete! $zprava->id}
Tento tvar nefunguje:
{plink Zpravy:delete! $zprava->id}
Píše to (ve stavovém řádku): error: Unknow signal ‚ZpravyPresenter:Zpravy:delete!‘. Nevím proč. Mohl by mi ještě někdo objasnit, k čemu jsou vhodné akce a k čemu signály? Mám v tom zmatek.
Díky
Editoval weckho (6. 9. 2009 21:48)

- DocX
- Člen | 154
viz https://doc.nette.org/…n/presenters
Signál „spouští“ událost na presenteru a může být vyvolán pouze z aktuálního presenteru (například stisknutí tlačítka apod.). Signál nelze volat na jiný presenter! Je základním prvkem AJAXu v Nette.
Akce je v podstatě něco jako podstránka presenteru,
neboli sekce nějakého logického celku. Například presenter
MůjÚčet bude mít akce Zobraz, Edituj.
Každá akce pak může mít různé view, například podle typu
uživatele.
Pak akce může být buď „zobrazovcí“ (nechá spustit render) nebo může být pouze „akční“ (něco provede a přesměruje jinam). Akční akce by ale měly být tvořeny signály.
Takto to alespoň chápu já :) Připomínky vítám :)
Editoval DocX (6. 9. 2009 22:34)

- Ondřej Mirtes
- Člen | 1536
Já bych ještě doplnil, že signálů jsou dva druhy:
- ty, které mění stav aplikace a je tudíž po nich třeba provést
přesměrování (nejčastěji
$this->redirect('this'))- např. hlasování v anketě, přihlášení uživatele, odeslání komentáře
- proč přesměrování (303 See Other): jednak aby třeba vyhledávače nezaregistrovaly link přímo na tu akci (což by vedlo třeba k nechtěnému hlasování v anketě a dalším i zkázonosnějším situacím) a v případě formulářů, aby nedocházelo k opětovnému odeslání pomocí F5 (více na wikipedii – Post/Redirect/Get)
- ty, které nějak ovlivňují dané view a přesměrování je u nich
nepotřebné, ba přímo nežádoucí. Např. řazení sloupce v tabulce,
stránkování… V tom případě v adrese zůstává tvar např.
(
/kategorie/procesory/?paginator-page=15&do=paginator-page) a když uživatel někomu pošle odkaz, načte se mu rovnou na 15té stránce. Do této kategorie patří i případy, kdy se vyplatí formulář odesílat GET metodou (vyhledávání, právě přechod na stránku pomocí zapsání jejího čísla apod.)