ConstructURL z routeru vrací URL, která nedává moc smysl
- Mesiah
- Člen | 240
Ahoj,
prosím Vás, narazil jsem na nepříjemnost. Mám vytvořenou instanci třídy
Request
Nette\Application\Request(7) {
method private => "FORWARD" (7)
flags private => array(0)
name private => "Homepage:" (9)
params private => array(2) {
id => "12" (2)
action => "default" (7)
}
post private => array(0)
files private => array(0)
frozen private => FALSE
}
tu předávám společně s instancí třídy \Nette\Http\Url
metodě třídy IRouter
$this->router->constructUrl($request, $this->url)
, IRouter
mám získaný z DI Containeru, což je v mém případě
Nette\Application\Routers\RouteList
, ale na výstup dostávám URL
ve tvaru http://homepage./default/12
– což jak není to co bych
čekal. :) (snažím se získat URL ve tvaru
http://192.168.21.128/Nette/www/homepage/default/12
, kde Nette je
adresář ve /var/www)
Napadá Vás prosím, co jsem mohl pokazit?
PHP 5.3.10 + Nette Framework 2.0.13 na Ubuntu – nemá nijak konfigurované aliasy, jen localhost.
Editoval Mesiah (7. 1. 2014 23:07)
- David Matějka
- Moderator | 6445
- ta dvojtecka v
Homepage:
tam nema co delat - jak vypada instance
Nette\Http\Url
?
- Mesiah
- Člen | 240
matej21 napsal(a):
- ta dvojtecka v
Homepage:
tam nema co delat- jak vypada instance
Nette\Http\Url
?
- díky za tip – pomohlo to
- jo, tam bude problém.
Nette\Http\Url(9) {
scheme private => ""
user private => ""
pass private => ""
host private => ""
port private => NULL
path private => ""
query private => ""
fragment private => ""
frozen private => FALSE
}
už se mi generují hezké URL http://homepage/default/12
ale
bez domény, což bude hádám tím, že mám třídu URL v podstatě
prázdnou, každopádně vím kudy jít, díky! :)
- Mesiah
- Člen | 240
Na službu, která generuje URL :)
Tu používám v template pro odesílání emailů, už s tímhle mi matej21
radil, a na generování URL pro entity, které mi výjdou z DB – Lean
Mapper je báječně navržený (díky za něj!), a umožňuje zavolat službu
pro generování URL z entity díky EntityFactory…
Jen pro zajímavost doplním, že k tomu abych vytvořil instanci třídy
URL se správně načtenými properties (scheme, host, port, path, …), bez
nutnosti šahat na superglobální pole nebo data mít uloženy v configu, jsem
z DI containeru získat IRequest a ten má metodu getUrl(),
která vrací string (url) a ten předávám v konstruktoru třídě URL.
Ale jak moc je to správný přístup si nejsem jistý.. :/
- David Matějka
- Moderator | 6445
@Mesiah: IRequest::getUrl() nevraci URL ve stringu, ale
Nette\Http\UrlScript
, viz api, takze
nemusis Url objekt znovu vytvaret. Jinak ziskani URL z http requestu je
nejlepsi zpusob, ale dej si pozor na CLI aplikace.