Ja zachovat doménu při routování
- BigCharlie
- Člen | 283
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)