Absolutní odkaz
- Jan Tvrdík
- Nette guru | 2595
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 | 8218
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
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 | 8218
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
David Grudl napsal(a):
hodí se například při generování RSS
Přesně na tohle to potřebuji :)
- Tomik
- Nette Evangelist | 485
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 | 8218
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ě.
- romansklenar
- Člen | 655
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 | 8218
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
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>