ConstructURL z routeru vrací URL, která nedává moc smysl

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mesiah
Člen | 240
+
0
-

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
+
0
-
  1. ta dvojtecka v Homepage: tam nema co delat
  2. jak vypada instance Nette\Http\Url?
Mesiah
Člen | 240
+
0
-

matej21 napsal(a):

  1. ta dvojtecka v Homepage: tam nema co delat
  2. jak vypada instance Nette\Http\Url?
  1. díky za tip – pomohlo to
  2. 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! :)

honos
Člen | 109
+
0
-

Tak jenom možná trochu podivná otázka nebo čistá zvědavost ale k čemu to potřebuješ? :)

Mesiah
Člen | 240
+
0
-

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
+
0
-

@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.