Generovani odkazu

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

Mam jednoduchy problem, kdyz mam nette aplikaci umistenou treba na http://localhost/projekty/myApp a vygenruju odkaz napr.:

<?php
$this->link(':Pages:Page:show', array(1));
?>

tak vystupem bude napr.: <a href="projekty/myApp/page/1">Text odkazu</a>
No a ja chci mit moznost zmenit prave to projekty/myApp/ neb to si tam nette dodava nejak samo.

_Martin_
Generous Backer | 679
+
0
-

Ahoj, nezlob se na mě, ale když máš aplikaci dostupnou na adrese http://localhost/projekty/myApp, jak jinak by ses na ní chtěl dostat, než přes /projekty/myApp? Možná jen nechápu, v čem je problém, zkus to tedy více rozepsat.

Honza Marek
Člen | 1664
+
0
-

Nemusíš to měnit. Nette samo pozná, kde bydlí web.

raistm
Člen | 9
+
0
-

No prave ze pozna… Ale ja chci na jednom systemu hostit vic domen. A to takovym zpusobem, ze odkazy na ruzne domeny budou soucasti jednoho stromu (graficky to bude ve stromu odlisene), cili se chci v jednom systemu odkazovat na stejny presenter pokazde pod jinou domenou a s jinyma parametrama

_Martin_
Generous Backer | 679
+
0
-

Znamená to, že ten presenter bude fyzicky jeden a všechny domény budou směřovány na jednu aplikaci? Nebo bude víc kopií jedné a té samé aplikace? V tom prvním případě by to pravděpodobně šlo řešit upravenou routou (něco ve stylu //<domain>/<presenter>/<action>/<id>)- akorát bys potom musel při generování vždy uvádět, na jakou doménu odkaz směřuje.

raistm
Člen | 9
+
0
-

Spravne je prvni moznost…
Jak pri generovani uvedu nejakou domenu?

_Martin_
Generous Backer | 679
+
0
-

raistm napsal(a):

Spravne je prvni moznost…
Jak pri generovani uvedu nejakou domenu?

Pokud použiješ routu, kterou jsem psal v předchozím příspěvku, tak stejně, jako jakýkoliv jiný parametr:

$this->link(':Pages:Page:show', array('domain' => 'www.example.com', 'id' => 1));`

Myslím, že by to mělo fungovat. Nevýhoda je, že u každého odkazu musíš psát doménu, protože presenter nemůže vědět, jakou doménu zamýšlíš (a z hlavy mě nenapadá řešení, jak to udělat, aby se doména přenášela sama – možná za pomoci persistentního parametru…?).

kravčo
Člen | 721
+
0
-

raistm napsal(a):

… Jak pri generovani uvedu nejakou domenu?

Dôležité je nastaviť router tak, aby doménu do odkazu zaradil (podobne, ako písal _Martin_):

$router[] = new Route('//<domain>/<presenter>/<action>/<id>', array(
    'presenter' => 'Homepage',
    'action' => 'default'
    'id' => NULL, // Edit: doplnené
));

Pokiaľ nie je aplikácia priamo na roote serverov, je potrebné zadať aj celú cestu k nej, napríklad:

$router[] = new Route('//<domain>/path2app/<presenter>/<action>/<id>', array(
    'presenter' => 'Homepage',
    'action' => 'default'
    'id' => NULL, // Edit: doplnené
));

Pri odkazovaní by mal byť parameter domain perzistentný, inak by ho bolo treba zapisovať do každého odkazu (ak je perzistentný, treba ho uvádzať len ak sa mení).

potom v šablóne (ak je domain je perzistentý):

{plink About:contact} <!-- odkaz na rovnakú doménu -->
{plink Homepage:index, 'domain' => 'alternative.com'}

Editoval kravco (29. 5. 2009 1:17)

_Martin_
Generous Backer | 679
+
0
-

kravco napsal(a):

Díky za doplnění. Ještě bych dodal, že paramter id musí být volitelný, jinak by musel být presenter s akcí povinný.

$router[] = new Route('//<domain>/<presenter>/<action>/<id>', array(
	'presenter' => 'Homepage',
	'action' => 'default'
	'id' => NULL,
));

// respektive

$router[] = new Route('//<domain>/path2app/<presenter>/<action>/<id>', array(
	'presenter' => 'Homepage',
	'action' => 'default'
	'id' => NULL,
));
kravčo
Člen | 721
+
0
-

_Martin_ napsal(a):

Díky za doplnění.

Bol to paralelný príspevok, nie doplnenie, v texte som reagoval na tvoj skorší príspevok…

Ještě bych dodal, že paramter id musí být volitelný, jinak by musel být presenter s akcí povinný.

Ďakujem za postreh ;)