Generovani odkazu
- raistm
- Člen | 9
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.
- raistm
- Člen | 9
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
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.
- _Martin_
- Generous Backer | 679
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
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
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,
));