Jak vytvořit odkaz na jiný server?

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

Ahoj, narazil jsem na problém, jak vytvořit adresu, která vede na jiný server, třeba crazyday.cz Pro příklad uvedu, když chci, aby součástí flashMessage byl právě odkaz ven. To samé by mě zajímalo, když chci přesměrovat na jiný server.

toka
Člen | 253
+
0
-

Co se týče flashMessages (netvrdím, že to je absolutně jediné správné řešení):

	$a = Html::el('a')->href('http://www.google.cz')->setHtml('Odkaz');
	$this->flashMessage('Text zprávy s odkazem - ' . $a, 'info');

Je však potřeba upravit výpis flashMessage v šabloně, aby nedocházelo k escapování:

{snippet flashMessage}
	{foreach $flashes as $flash}
		<div class="flash {$flash->type}">{!$flash->message}</div>
	{/foreach}
{/snippet}

Pro přesměrování na jiný server slouží následující metoda/konstrukce:

	$this->redirectUri('http://www.google.cz/');

EDIT:
Nevím jak moc by bylo správné, z bezpečnostních důvodů, to „escapování“ ovlivňovat. Jestli neřešit takto:

	$a = Html::el('a')->href('http://www.google.cz')->setHtml('Odkaz');
	$msg = $this->flashMessage('Text zprávy s odkazem - ' . $a, 'info');
	$msg->noescape = true;
{snippet flashMessage}
	{foreach $flashes as $flash}
		<div class="flash {$flash->type}">{if isset($flash->noescape)}{!$flash->message}{else}{$flash->message}{/if}</div>
	{/foreach}
{/snippet}

Editoval toka (3. 3. 2011 9:04)

Milo
Nette Core | 1283
+
0
-

Když chci ve flash message URL, řeším to podobně jako toka, ale předávám celý Html objekt abych nemusel řešit escapování. V principu takto:

$this->flashMessage( Html::el()->setHtml("Pohledej na <a href='http://www.google.cz/'>Googlu</a>."));
toka
Člen | 253
+
0
-

Nedošlo mi, že pokud je flashMessage předán objekt HTML, tak nedochází k escapování. Tvůj příklad je asi nejjednodušší.

A nebo jinak v případě použití Html i pro sestavení odkazu:

$this->flashMessage(Html::el()->setHtml('Text zprávy s odkazem - ' . Html::el('a')->href('http://www.seznam.cz')->setHtml('Odkaz')));
voda
Člen | 561
+
0
-

Já bych to upravil ještě takto:

$this->flashMessage(Html::el()->add('Text zprávy s odkazem - ')->add(Html::el('a')->href('http://www.seznam.cz')->setText('Odkaz')));

Pak není potřeba u případných ‚<‘ a ‚>‘ řešit escapování.

toka
Člen | 253
+
0
-

To není třeba ani v mnou uvedeném případě.