Routování a vytváření odkazů s proměnnými
- Wailey
- Člen | 48
Zdravíčko, už několik dní dumám nad routováním a pořád jsem nepřišel jak vytvořit správný Route.
$router = new RouteList;
$router[] = new Route('index.php[/<action>][/<id>]', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<username>/<presenter>[/<action>][/<id>]', 'Homepage:default');
Potřebuji, aby to propouštělo
%domain%/ → homepage:default [akce][id]
%domain%/username → homepage:default [akce][id]
%domain%/username/presenter → presenter:default
[akce][id]
popřípadě
%domain%/ → homepage:default [akce][id]
%domain%/username → homepage:default [akce][id]
<presenter>.%domain%/username → presenter:default
[akce][id]
mám problém s vytvářením odkazů na akce
Př.:
v HomepagePresenter mám actionOut, při volání skrze {plink
Homepage:out}
Prosím vás poraďte mi, jak vkládat do plink/link proměnnou na správné
místo (%domain%/username/presenter), při nejlepším, jak vytvořit správné
Routy, a jak efektivněji vytvářet na ně odkazy.
Předem moc děkuji, budu rád za jakýkoliv obrat
- sidrach
- Člen | 23
Jsem sice lama, ale nechápu moc tu konstrukci s %domain% a username. Chceš v nette obsluhovat víc domén najednou? Username v url nepotřebuješ, kdykoliv máš v nette možnost zjistit identitu uživatele přes (v presenteru):
$this->getUser();
Nepřihlášený vrátí identitu guest, přihlášený identitu. (více zde)
Jinak začal bych klidně se simplerouterem ze sandboxu, jak přidat do routy proměnnou je hezky vidět tady v routě
$route = new Route('history/<year>', 'History:view');
//v presenteru HistoryPresenter.php:
public function renderView($year){
$this->template->year = $year;
}
//redirect by byl:
$this->redirect('History:view', array('year'=>'nejaka hodnota'));
v šabloně pak:
<a n:href="History:view parametr" target="_self" title="cosi">odkaz na historii</a>
- Wailey
- Člen | 48
Autor: Wailey
Děkuji za snahu, ale to nevyřeší můj problém.
na hostingu chci
[<subdomain>.]%domain%[/<username>][/action][/id]
subdomain – určuje presenter
username – z SEO hlediska a sdílení k identitě
Na localdomain mám vlastní verzovací systém, kde nemůžu používat
subdomain,
proto řeším i routing
%domain%[/<username>][/<presenter>][/action][/id]
Nevím, jen jak na tuto strukturu generovat odkazy s proměnou uprostřed výrazu.
- sidrach
- Člen | 23
Pak bych možná část [<subdomain>.]%domain% řešil spíš přes htaccess a teprve zbytek v nette. Ale celá ta struktura je dost ufo.
nevím, jestli náhodou nejde místo klíčového slova <presenter> použít něco takového:
$route = new Route('//<subdomain>.%domain%/<action>/<id>', array(
'presenter' => $subdomain, //asi? Nebo nějaký předklad/transformace
'action' => 'default',
'id' => NULL,
));
Odkazy se generují stejně, bez ohledu na to kde v masce routy jsou uvedeny parametry.
Editoval sidrach (28. 4. 2015 12:25)