Ja zachovat doménu při routování

- BigCharlie
 - Člen | 285
 
Ahoj, trápím se s následujícím problémem. Mám dvě různé domény
abc.cz, xyz.sk. Na těch doménách běží aplikace,
která má administrační část na subdoméně admin a frontend na www.
Pro potřeby překladu potřebuji odchytit jazyk, který se odvíjí od tld. A tady jsem se do toho nějak zamotal.
Moje představa:
admin.abc.cz→ module:admin, locale:czadmin.xyz.sk→ module:admin, locale:skwww.abc.cz→ module:www, locale:czwww.xyz.sk→ module:www, locale:sk
Potřeboval bych, aby se název domény (tedy abc či
xyz) zachovával a myslel jsem, že k tomu půjdou použít Foo
parametry. Jenže ty standardně tvoří co nejkratší adresu…
Naivní představa je něco takového (což je neexistující kombinace chování foo parametrů a volitelných sekvencí):
	AdminRouter::createRoutes($router, '//admin.<!? abc|xyz>.<locale cz|sk/');
	FrontRouter::createRoutes($router, '//www.<!? abc|xyz>.<locale cz|sk>/');
	//Naznačení routování
	AdminRouter::createRoutes() {
		$admin = new RouteList('Admin');
		$admin[] = new Route($prefix . '<presenter>/<action>[/<id>]', 'Board:default', Route::SECURED);
		...
	}
	FrontRouter::createRoutes() {
		$front = new RouteList('Front');
		$front[] = new Route($prefix . '<presenter>/<action>[/<id>]', 'Homepage:default');
		...
	}
Kdyby existovala proměnná %domainname%, měl bych vyhráno, ale existují jen %domain% a %tld%.
Jde nějak zachovat v url název domény, aniž bych se o něj musel starat?

- Aurielle
 - Člen | 1281
 
Nepomůžou ti nové placeholdery pro doménu? Viz https://doc.nette.org/…tion/routing#…

- Tawre
 - Člen | 3
 
Já jsem zrovna řešil něco podobného. Vlastní router se mi psát nechtělo, tak jsem si pomohl persistními parametry.
Ve výsledku by to bylo u tebe nějak takhle:
AdminRouter::createRoutes($router, '//admin.<domain>.<locale cz|sk/');
FrontRouter::createRoutes($router, '//www.<domain>.<locale cz|sk>/');
//Naznačení routování
AdminRouter::createRoutes() {
    $admin = new RouteList('Admin');
    $admin[] = new Route($prefix . '<presenter>/<action>[/<id>]', 'Board:default', Route::SECURED);
    ...
}
FrontRouter::createRoutes() {
    $front = new RouteList('Front');
    $front[] = new Route($prefix . '<presenter>/<action>[/<id>]', 'Homepage:default');
    ...
}
Persistentní parametry v presenterech budou $locale a $domain. Tím si neodstřelíš generování odkazů.
Editoval Tawre (8. 4. 2015 23:37)