Podpora Nette routování v „tlustých“ klientech

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Pokud spolu s Nette využívám nějakého rozsáhlejšího Javascriptového frontendu, který využívá Ajaxem dostupného API mojí aplikace, dostávám se vždy do mírné komplikace s přípravou odpovídající URL. Z povahy aplikace často nelze mít všechna URL serverově předgenerována, je třeba je sestavovat dynamicky – a v tom okamžiku mi obvykle nezbývá než natvrdo URL sestavit podle toho, jak má aplikace nastavené routování. Co mě štve, je tohle propojení a ztracení výhody Nette routování :).

Zajímalo by mě, jestli se tímto problémem někdo více zabýval a hledal řešení. Mně zatím napadá implementovat nějaký export routovacích předpisů do Javascriptu a následné sestavování linků v klientovi. Nevýhodou by samozřejmě bylo ořezání vlastních rout, které mohou záviset na kdečem (databázi), ale to bych oželel. Druhou variantou by byla možnost vyžádat si linky „předdatečným“ Ajaxovým požadavkem, ale to mi přijde jako nechutné plýtvání.

enumag
Člen | 2118
+
0
-

Teď střílim od boku, ale v těchto případech není potřeba mít hezkou url, ne? Tzn. stačilo by URL sestavit jako SimpleRouter a ten si v bootstrapu přidat jako poslední router. Pokud jsem řekl úplnou blbost tak mne prosím nekamenujte. :-D

bazo
Člen | 620
+
0
-

ja taketo veci riesim tak, ze si necham v sablone vygenerovat url do data- atributov a potom ich odtial javascriptom nacitavam, na strane js sa ziadne generovanie url nekona a routy sa mozu tiez menit, pre js ziadna zmena

mkoubik
Člen | 728
+
0
-

Tohle řešení stačí jen do chvíle, kdy potřebuješ do routy dosadit parametr vygenerovaný v javascriptu.

Ot@s
Backer | 476
+
0
-

mkoubik napsal(a):

Tohle řešení stačí jen do chvíle, kdy potřebuješ do routy dosadit parametr vygenerovaný v javascriptu.

V tomto momentě používám jednoduchou JS fce, která mi potřebné (referenční) URL generované z Nette rozparsuje a pak si s tím pracuju jak potřebuju. Funguje to báječně.

<script>
function getUrlParams(query) {
	var path = query.split('?');
	var match, urlParams = {}, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); };
	while (match = search.exec(path[1])) urlParams[decode(match[1])] = decode(match[2]);
	return {url: path[0], params: urlParams};
}
</script>

Editoval Ot@s (28. 11. 2012 7:50)

bazo
Člen | 620
+
0
-

mkoubik napsal(a):

Tohle řešení stačí jen do chvíle, kdy potřebuješ do routy dosadit parametr vygenerovaný v javascriptu.

tak potom treba pouzivat rest