Zmena persistentneho parametru a presmerovani
- matopeto
- Člen | 395
Zdravim, Pouzivam nette 2.0.*
A chcel by som zistit, ci je nasledujuca vec ficura (a mozem ju pouzivat) alebo bug.
Ak zmenim perzistentny parameter v prezentru v startup
alebo
v niektorej s action*
metode teda
<?php
...
$this->parameter = 'xyz'
...
?>
Nette automaticky urobi redirect na url s novou hodnotou tohoto parametru.
(beforeRender
sa uz nezavola)
Pokia je to ficura, je to niekde zdokumentovane, kde este mozem menit parameter, tak aby nastalo presmerovanie? Funguje to tak i v nette 2.1?
Editoval matopeto (29. 8. 2013 14:25)
- duke
- Člen | 650
Z kódu je zjevné, že action metody se skutečně volají před automatickou kanonizací.
Na otázku, proč bylo zvoleno právě toto pořadí, ti asi přesnou odpověd může dát pouze David Grudl.
Já v tom vidím jednak možnou optimalizaci založenou na předpokladu, že
pokud aplikace sama provede nějaké přesměrování (byť třeba při
zpracování nekanonického url), udělá to nejspíš právě v action
metodě, takže by v těchto případech odpadlo jedno zbytečné
přesměrování (to kanonizační).
Ale spíš jde o to, že lze předpokládat, že persistentní parametr nebude
v action metodě nikdo chtít měnit aniž by sám následně vyvolal
přesměrování. Jaký smysl má měnit persistentní parametr a pak
nepřesměrovat? Bez přesměrování pak totiž renderuješ jiný stav, než
odpovídá url.