Absolutní odkaz

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jan Tvrdík
Nette guru | 2595
+
0
-

Jak lze z páru presenter:view vygenerovat absolutní url (i s doménou a protokolem)? $this->link vrací jen relativní url.

David Grudl
Nette Core | 8144
+
0
-

To je věc, kterou jsem už dávno chtěl přidat (hodí se například při generování RSS), ale jsem nerozhodný, co se týče implementace. Nejlepší by asi bylo využít metody link() a cíl presenter:view doplnit o příznak absolutního odkazu. Jakou ale zvolit syntax?

Tomik
Nette Evangelist | 485
+
0
-

David Grudl napsal(a):

To je věc, kterou jsem už dávno chtěl přidat (hodí se například při generování RSS), ale jsem nerozhodný, co se týče implementace. Nejlepší by asi bylo využít metody link() a cíl presenter:view doplnit o příznak absolutního odkazu. Jakou ale zvolit syntax?

\\presenter:view?

Editoval Tomik (9. 1. 2009 21:48)

David Grudl
Nette Core | 8144
+
0
-

hehe, zrovna tohle byl můj tip ;)

vlastně ne! můj tip byl //presenter:view

Editoval David Grudl (9. 1. 2009 23:28)

Jan Tvrdík
Nette guru | 2595
+
0
-

David Grudl napsal(a):
hodí se například při generování RSS

Přesně na tohle to potřebuji :)

Tomik
Nette Evangelist | 485
+
0
-

David Grudl napsal(a):

hehe, zrovna tohle byl můj tip ;)

vlastně ne! můj tip byl //presenter:view

:) To je ale důležité dilema! Viděl bych to na duel při večerním šeru. Zbraně můžeš vybrat. Kdo vyhraje, toho varianta se použije. :)

Ne teď vážně: Tvoje varianta je logičtější, chtěl jsem tam taky napsat ty dvě lomítka, která jsou za protokolem v adrese, ale nějak se mi podařilo je obrátit. :)

David Grudl
Nette Core | 8144
+
0
-

Tam jde ještě o to, že zápis {link Hospoda:pivo} se převádí na ..->link("Hospoda:pivo") a tam je používání zpětných lomítek nevyzpytatelné.

Druhá možnost je zapnou absolutní odkazy globálně, pro presenter nebo šablonu. Totiž zdá se mi, že pokud už budu potřeboval absolutní odkazat, tak ho budu potřebovat plošně v celé šabloně.

Jod
Člen | 701
+
0
-

A čo to nazvať nejak alink. Aj keď to by trebalo dať nejak aj k plink. aplink? :D

David Grudl
Nette Core | 8144
+
0
-

Od revize 201 funguje $presenter->relativeLinks = FALSE;

romansklenar
Člen | 655
+
0
-

David Grudl napsal(a):

Od revize 201 funguje $presenter->relativeLinks = FALSE;

Nefunguje? V poslední revizi (207) property $relativeLinks ještě pořád je.

David Grudl
Nette Core | 8144
+
0
-

relativeLinks, to je přece nesmysl :-) Volí se mezi absolutním URL a absolutní cestou. Takže použiji třeba $presenter->absoluteUrls = TRUE.

pmg
Člen | 372
+
0
-

David Grudl napsal(a):

Druhá možnost je zapnou absolutní odkazy globálně, pro presenter nebo šablonu. Totiž zdá se mi, že pokud už budu potřeboval absolutní odkazat, tak ho budu potřebovat plošně v celé šabloně.

Co když budu chtít na stránku vypsat absolutní url, jako to dělá Yuhů, nebo v ukázce kódu, jako to dělá David?

Jestli je to pro přidání podpory //presenter:view málo, zde pro ostatní přikládám alternativní řešení.

// presenter
public function renderDefault()
{
	$uri = $this->getHttpRequest()->getUri();
	$this->template->baseUri = $uri->baseUri;	// kvůli filtru relativeLinks
	$this->template->hostUri = $uri->hostUri;
}

// šablona
<p>{$hostUri}{link default}</p>

// alternativně deklarace v šabloně
<p>{assign $hostUri Environment::getHttpRequest()->uri->hostUri}</p>
David Grudl
Nette Core | 8144
+
0
-

Přesvědčil jsi mě :-) //presenter:view generuje absolutní URL.

pmg
Člen | 372
+
0
-

Jé děkuji, udělal jsi mi radost.