Jak na routování v javascriptu
- amik
- Člen | 118
Ahoj,
Prosím o radu, jak řešíte generování Nette odkazů v JavaScriptu?
Našel jsem pouze toto: https://forum.nette.org/…z-javascript
ale tam se řeší vlastně jen statický odkaz, to není tak úplně můj
problém. Potřeboval bych generovat odkazy i s nějakou proměnnou, kterou
zná až javascript, např. bych chtěl volat pro natažení událostí do
kalendáře:
$.get({link Events:list year='%year%',month='%month%'}, function(){...});
S tím, že year a month se dosazují až automaticky javascriptem.
Napadlo mě toto: prostě vygenerovat odkaz takto a pak javascriptem nahradit
%year% za aktuální rok (na to, že string %year% se jinde v odkazu neobjeví,
se celkem dá spolehnout), jenže nette (správně) linky escapuje, takže bych
musel nahrazovat %25year%25, což už je celkem divoké a co do čistoty kódu
se mi to nelíbí.
Dále mě napadlo generovat odkaz dynamicky přes AJAX, ale krom toho, že mi to připadá jako zbytečný overhead, se jaksi rekurzivně setkám se stejným problémem, když budu chtít odkaz získat:
$.get({link Utils:generateLink 'Events:list year=\'%year%\',month=\'%month%\'}, function(payload){
$.get(payload.link, function(){...});
});
takže tím bych vlastně nic nevyřešil, jen bych to celé zkomplikoval.
Ptám se tedy, zda existuje nějaké hezké a čisté řešení, případně
jak to běžně řešíte vy, nebo zda mám zůstat u nahrazování %25year%25
.
Díky za tipy :)
- amik
- Člen | 118
Jo, tohle mě taky napadlo, problém je ten, že to nerespektuje Nette routy. Co když budu mít naroutováno
$router[] = new Route('<presenter>/<action>/<month>/<year>', 'Homepage:default', $secureFlag);
Já vím, v tomhle případě by asi takováhle routa byla trochu úchylná, jen na tom chci demonstrovat, že to taky není úplně stoprocentní řešení.
petr.pavel napsal(a):
$.get( {link Events:list}, { "month": month, "year": year } );
- amik
- Člen | 118
Díky, beru to tedy tak, že žádné opravdu čisté řešení v nette pro toto není. Je fakt, že url pro ajax nemusí být nice, takže prostě budu tyhle parametry vždy předávat jako součást query. S globální proměnnou to řeším stejně :)
sKopheK napsal(a):
Řešil bych to přes handle, kterému bych ty parametry předal, a v něm překreslil potřebné části stránky. Pěkné URL vůbec neřeš, když to jde přes AJAX. Osobně si dávám potřebné URL pro JavaScript do nějaké globální proměnné.