Routování se znakem #
- mat
- Člen | 4
Snažím se routovat podle části URL, která se nachází za znakem # (volitelná část URL).
Příklad:
http://example.com/#?presenter=Default&action=default
nebo
jednodušeji např. http://example.com/#Default;default
Proč: chci pro navigaci na webu použít AJAX (Stránka by se měla obnovit
ideálně pouze v jedné situaci – to když by se na server nahrával
soubor – to nelze realizovat AJAXem). Chci mít ale možnost
„bookmarkování“ jednotlivých stavů stránky, zachování funkčnosti
tlačítka „zpět“ a „vpřed“ apod.
Problém je, že jakákoliv změna URL pomocí JS vyvolá znovunačtení
stránky. Jedinou výjimkou je právě změna části URL za znakem #
(javascript: location.hash='to co bude za #';
).
Ukázka, jak je to možné řešit např. v Google Web Toolkitu (popis: tady).
Je možné konfigurovat „standardní“ router tak, aby bral v úvahu tuto část url?
Zkoušel jsem různé kombinace typu:
<?php
$router[] = new Route('#<presenter>;<action>', array(
'presenter' => 'Default',
'action' => 'default',
));
?>
ale bez úspěchu (myslím, že část URL s # se před zpracováním „uřízne“?)…
Můžete mě nasměrovat nějakým směrem vedoucím k řešení (doufám, že jenom špatně píšu to pravidlo)? :-)
- David Grudl
- Nette Core | 8221
Fragment (část za #) uřízne už samotný prohlížeč a na webový server vůbec nedorazí. Routovat podle něj proto nelze.