Chyba/Vlastnost při generování URL s persistentním parametrem po překreslení snippetu
- 2bfree
- Člen | 252
Narazil jsem na zvláštní chování v Nette a popravdě nevím, jestli je to vlastnost (pak bych to doplnil do dokumentace), nebo chyba?
Když mám v Presenteru persistentní parametr a několik komponent, které vykreslují odkaz na vlastní událost, pak se tento parametr správně přidává do URL.
Jakmile však jedna komponenta ve svém životním cyklu změní hodnotu tohoto parametru a následně překreslí snippety všech komponent, tak se sice nová hodnota parametru dostane všude a vykreslí správně, ale link generátor v těchto komponentách pracuje stále s původní hodnotou.

Řešením / workaroundem pak je nastavit nejen hodnotu persistentního
parametru, ale zároveň i přepsat hodnotu parametru v property
params
na Presenteru viz: příklad
- Marek Znojil
- Člen | 92
Ahoj,
řekl bych, že je to očekáváné/správné chování. Také si myslím, že
tvoje aktualizace stavu jenom persistentního parametru je správná.
Také se nabízí možnost rovnou znovu aktualizovat stav celého prezenteru:
$params = [];
$this->saveState($params);
$this->loadState($params);
A linkGenerátor dostane správné parametry z aktuálního stavu.
- 2bfree
- Člen | 252
Připadá mi, že je to při nejmenším neintuitivní, dříve se to chovalo jinak (nebylo to potřeba) a je-li to “správně”, pak bych o tom čekal záznam v dokumentaci…
Případně, pokud by toto byla standardní cesta, pak bych čekal
v Presenteru nějaký helper aka reloadState
, který by toto
přesně udělal…
Editoval 2bfree (Včera 5:59)
- Marek Znojil
- Člen | 92
Data parametrů se ti načtou z URL, jejich stav se pak uloží (jen jednou) a to při vytváření komponenty.
V příkladu odkaz na událost přenáší pořád stejnou hodnotu parametru, proto mi přijde logické, že pokud chceš již za běhu změnit stav parametru, musíš ho po změně hodnoty i znovu aktualizovat.
reloadState
nezní špatně 👍.