Routování webu – subdomény a presentery

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

Dobrý den.

Dostal jsem za úkol vytvořit síť webů.
Dejme tomu, že máme společnost, která funguje pro celou evropu. V některých státech pak máme oddělení pro danou zemi.

Je třeba vytvořit web jak pro celou evropu, tak pro jednotlivé státy. Domény budou teda vypadat zhruba takto:

  • example.com (hlavní web pro celou evropu)
  • cz.example.com (oddělení pro Česko)
  • pl.example.com (oddělení pro Polsko)

atd..

Všechny weby budou vypadat úplně stejně (grafika se bude lišit jen nějakou barvou) a budou obsahovat stejné „typy“ věcí – články, galérie, události, apod. Každý web bude mít ale samozřejmě vlastní články, vlastní galérii, atd.

Příjde mi nejjednodušší to udělat v rámci jedné Nette aplikace pod jednou databázi.

Při návrhu jsem se ale hned zasekl u jedné věci.. Jak nejlépe udělat routování?
Zkouším si hrát s routou:

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

Ale nepříjde mi to jako dobrý nápad. S takovou bych musel předávat parametr site do všech metod presenteru.

Neexistuje nějaký způsob, jak předat subdoménu do presenteru – např. do nějaké proměnné instance toho presenteru?

Napadlo mě ještě to dát celé do modulů – měl bych tak pro každý web vlastní modul. Ale to bych musel pořád kopírovat presentery a šablony.. což by bylo šílené pro udržování nějaké konzistence celé aplikace, a navíc ty jednotlivé weby musí jít vytvářet v administraci, nikoliv ručně na serveru.

Možná, že to dělám celé špatně, a existuje nějaké chytřejší řešení – kdyžtak mě prosím nakopněte.

Děkuji

Editoval BuGeR (27. 5. 2015 23:13)

Jan Tvrdík
Nette guru | 2595
+
0
-

Neexistuje nějaký způsob, jak předat subdoménu do presenteru – např. do nějaké proměnné instance toho presenteru?

Existuje. Hledej persistentní parametry a nejdeš.

BuGeR
Člen | 45
+
0
-

Super. Děkuji Honzo.