Podpora Nette routování v „tlustých“ klientech
- Vojtěch Dobeš
- Gold Partner | 1316
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í.
- Ot@s
- Backer | 476
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)