parsování URL – jak získat hodnotu za lomítkem
- Marek Znojil
- Člen | 90
adferg napsal(a):
Ahoj, zkouším získat z url obsah za lomítkem localhost/stimtochcipracovat
Do presenteru jsem si dal:
$urlScript = new UrlScript; $urlPath = $urlScript->getScriptPath();
a dostanu jenom
string(1) „/“
Nemůže to být tím, že jsem na localhostu? Nebo dělám něco špatně?
Ahoj,
pokud chceš parsovat url aktuálního požadavku, tak v presenteru si prvně vyžádej http požadavek:
$httpRequest = $this->getHttpRequest();
a pak si nech vrátit aktuální url požadavku jako UrlScript:
$url = $httpRequest->getUrl();
- dakur
- Člen | 493
@adferg Myslím, že používáš špatnou metodu. Pod tímto odkazem,
který napsal Marek, je schéma, na kterém je vidět, že různé metody vrací
různé části URL. Zameřil bych se spíš na relative path či tak něco.
Tady mě trochu mate ten script.php
uprostřed URL, s tím jsem
ještě nepracoval, tak nevím, jak se to chová, ale jinak bych použil asi
getRelativePath()
či getRelativeUrl()
. Když zkusíš
všechny, určitě na něco přijdeš. :-)
Editoval dakur (17. 12. 2020 8:00)
- adferg
- Člen | 31
Ahoj, díky. Asi jsem měl napsat, co už jsem vyzkoušel. Přes httpRequest getUrl() mi to funguje. Dostanu ale celou URL a nevím, jak se dostat jen k její části za lomítkem a pak pracovat s tím stringem
$httpRequest = $this->getHttpRequest();
$url = $httpRequest->getUrl();
bdump ($url); //vyhodí mi celou URL
$urlScript = new UrlScript;
$urlPath = $urlScript->getScriptPath();
bdump ($urlPath); //vyhodí string obsahující jen "/"
- savalo
- Člen | 14
Ahoj,
podle linku na dokumentaci by
$this->getHttpRequest()->getUrl()->getRelativeUrl();
melo
vratit i cast za kotvou, ale kdyz mam v url ?var=null#asdf
tak mi
to vrati jenom ?var=null
bez #asdf kde je zrovna
hodnota ktera by me jedina zajimala :)
Tusi nekdo cim by to mohlo byt? Pouzivam nette/http v3.2.4
- mskocik
- Člen | 74
savalo napsal(a):
Ahoj,
podle linku na dokumentaci by
$this->getHttpRequest()->getUrl()->getRelativeUrl();
melo vratit i cast za kotvou, ale kdyz mam v url?var=null#asdf
tak mi to vrati jenom?var=null
bez #asdf kde je zrovna hodnota ktera by me jedina zajimala :)
Browser na server hash
neposiela. Musíš si ho tam pridať cez
JS, napr. ako query paramater, alebo hidden input pri submite formulára.
- savalo
- Člen | 14
Diky za opoved, to me nenapadlo, ze kdyz to tam je jako priklad ve sloupci „Vrácená hodnota“, tak ze se to nevraci..
U me to vypada to na chybu v ty response ze serveru treti strany, cpe to
tam #
kdyz jsem zkusil dat misto toho ?
tak to jde
tahat uz v pohode bez pres getQueryParameters()
- savalo
- Člen | 14
David Grudl napsal(a):
@savalo viz https://doc.nette.org/cs/http/request#…
Tady to je, pravda, ale tam me to nenapadlo hledat.
Spis bych to upozorneni ocenil pod tabulkou v https://doc.nette.org/cs/http/urls#… pokud se nehodi kvuli prikladu mit u getteru osekanou hodnotu o ten fragment #footer