Kam smerovat po vykonani akce na presenteru?

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

Zdravim,

trochu v teto otazce budu navazovat na predchozi dotaz.

Mam presenter a v nem nasledujici akce :
actionDefault – vykresli seznam vybaveni
addVybFormSubmitted – callback formulare, prida polozku
actionDeleteVyb – smaze dane vybaveni dle jeho id.

Mam nasledujici problem pri nasledujicim postupu.

  1. Zobrazim presenter → klasicka url.
  2. Smazu polozku → url se upravi tak, aby volala akci actionDeleteVyb a predala id mazane polozky.
  3. Ve formulari pridam novou polozku → pouzije stavajici url a prida parametr o odeslani formu.

Zde je ten problem, url obsahuje zaroven i informaci o akci odstranujici polozku. Aplikace se ji pokusi odstranit(coz nejde) a zaroven prida novou polozku.

Nevite prosim, jak spravne resit situaci s presmerovanim/forwardnutim/necim po vykonani dane akce?

Diky za pomoc, Tomas.

redhead
Člen | 1313
+
0
-

Já používám na smazání místo akce signál.

Chuck777
Člen | 10
+
0
-

Podle toho co jsem ted nastudoval o signalech, je opravdu lepsi pouzivat je namisto akci. Trochu mi to nakonec stira smysl mit vice akci pro jeden presenter, ale do Nette zatim vidim hodne malo.

Vzal jsem tedy kod z akce a dal jej do signalu. Pokud mam zakazany Ajax, tak to funguje.

  1. Zavola se actionDefault
  2. Zavola se signal
  3. Vyrenderuje se defaultni stranka

Pokud mam zapnuty ajax, tak vse probiha shodne. Jenom nazpet nedostanu zadne snippety i kdyz jsem je v signalu invalidoval.

Nasel jsem kusy kodu, kde se vzdy ve finale pouzival redirect a to neni podle me reseni pro tuto situaci.

Napada Vas neco? Diky, Tomas.

Chuck777
Člen | 10
+
0
-

Zazrakem to zacalo chodit a plati pro to stejna pravidla jako pro akce. Cim to, to nevim ale je to dobre.

uestla
Backer | 799
+
0
-

A co CSRF? :(
Smazání přes URL není nejlepší, nebo máte nějaký mechanismus pro ochranu proti CSRF při GET požavku?

Aurielle
Člen | 1281
+
0
-

Někdy nemusí být žádoucí generovat protection token u všech signálů (př. stránkování v Griditu, vlastní implementace ochrany odkazů v komponentě atd…), tak jsem si přidal anotaci @notoken, která zakáže generování tokenu pro konkrétní signál. Pokud by byl zájem dám to sem.