odstranění persistentních parametrů

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

Ahoj,
je prosím nějaká možnost jak vytvořit univerzálně odkaz, který bude bez veškerých persistentních parametrů? V latte něco na tento způsob: {plink presenter:action, null}. Mám v aplikaci použito poměrně hodně parametrů a potřeboval bych pro generování položek menu uvádět zcela bez parametrů – čas od času to dělá neplechu. Nebo je nutné pro každý presenter ručně nastavovat tyto parametry na null?

Předem díky.

MartinitCZ
Člen | 580
+
-1
-
{plink presenter:action, jmenoPersistentnihoParametru => NULL}
Jan Tvrdík
Nette guru | 2595
+
+3
-

@chap: Musíš explicitně vynulovat všechny persistentní parametry. Pokud bys to chtěl zkrátit, tak bych zkusil tohle:

{var $unpersist = array_fill_keys($presenter->persistentParams, NULL)}
{link Presenter:action, (expand) $unpersist}
chap
Člen | 81
+
-2
-

Tohle vím, spíše jsem myslel univerzálně vytvořit link bez všech perzistentních parametrů. V menu jsou odkazy na různé presentery, které mají různé parametry a já se nechci starat o jednotlivé. Jediné co mne napadá je nepoužívat link, ale psát odkazy přímo.

Aurielle
Člen | 1281
+
0
-

To je to nejhorší, co můžeš udělat. Změníš routy nebo parametry některé akce a odkazy ti přestanou fungovat. Buď persistentní parametry nuluj, jak tu bylo zmíněno, nebo zkus snížit jejich počet.

Oli
Člen | 1215
+
0
-

@chap: Otázkou je, proč máš tolik persistentních parametrů? Já mam na frontendu tuším jeden pro jazyk a jeden v komponentě paginatoru. Jsi si jistej, že to děláš správně?

Editoval Oli (16. 6. 2014 12:01)

chap
Člen | 81
+
0
-

použiji. Ptal jsem se spíš, jestli náhodou takováto funkce není někde schována. Ale takto je to asi dostačující. Díky moc.

chap
Člen | 81
+
0
-

@Oli … několik jsem myslel v závislosti na presenteru a znamená to nula až čtyři – podle potřeby. Netvrdím, že kód je dokonalý, ale pro některé funkcionality potřebuji takto uchovávat :)

MartinitCZ
Člen | 580
+
0
-

Tvůj kod neznáme, ale možná zkus zapřemýšlet o ukládání do session, místo použití url. :)
Občas to je lepší.

mkoubik
Člen | 728
+
+1
-

Persistentní parametry bys měl používat tam, kde chceš zachovávat jejich hodnotu v odkazech napříč presenterem (nebo presentery, pokud je definuješ na společném předkovi).
Pokud není očekávané chování že ten parametr zůstane v odkazu na danou akci, pak by nejspíš neměl být persistentní.
Případně zkus omezit jejich rozsah platnosti – definuj je jen na konkrétním presenteru, nedávej nesouvisející akce do stejného presenteru, nebo použij persistentní parametry komponent.