Perzistentní parametry v session

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

Dlouhou dobu jsem chodil kolem loadState a saveState po špičkách a snažil jsem se jim vyhnout, stejně jako perzistentním parametrům. Nelíbilo se mi, že se přenáší v URL a vůbec jsem jim nerozuměl, tak jsem si vždy poradil jinak.

Teď jsem se ale dostal do stavu, kdy by se mi opravdu hodilo mít u komponenty několik perzistentních parametrů a podle toho co jsem se dočetl v postech tady na fóru, je možné vlastní implementací právě metod loadState a saveState docílit ukládání těchto parametrů ne v URL, ale v session. To by se mi velice hodilo, ale bohužel nejsem schopný se s tím poprat :(

Určitě je kód velice triviální, ale přesto prosím o nakopnutí. Mám (zatím) jeden parametr, označený jako perzistentní. Matou mě ale parametry funkcí loadState a saveState … sám bych to řešil například načítáním a ukládáním do session v konstruktoru a destruktoru, ale chtěl jsem to udělat tak nějak v duchu Nette a použít už předpřipravených metod.

David Grudl
Nette Core | 8229
+
0
-

Metody loadState a saveState jsou interní, víceméně je nebudeš potřebovat (což mi připomíná, že bych měl příklad Fifteen v distribuci upravit tak, aby je nepoužíval, protože to asi zbytečně mate).

Stačí ti uvést anotaci @persistent u těchto proměnných ve zdrojovém kódu:

class NejakaKomponent {
    /** @persistent */
    public $promenna;
}

Přenášení v URL je charakteristický rys persistentních parametrů. Pokud potřebuješ zachovávat persistenci v session, tak je nepoužívej a místo nich použij přímo session.

na1k
Člen | 288
+
0
-

Ano, trochu mě zmátl příklad u Fifteen a potom taky topic někde tady ve fóru, kde je práce se session u load/save-State použitá. Navíc jsem si myslel, že perzistentní parametry nejsou omezené pouze na URL.

Ale dobrá tedy, použiju přímo session. Díky za rychlou odpověď ;-)