Moduly jedné aplikace nad ruznými subdoménami
- Retrox
- Člen | 11
Zdravím všechny,
mam v aplikaci a v ní dva moduly crm a www. Potřebuji, aby při zadání crm.domain.tld vše pracovalo nad crm modulem a při zadání www.domain.tld zase nad www modulem. Zkoušel jsem to pomocí routování v bootstrapu, ale vždy jsem skončil na nefunkčních odkazech. Řešil už nekdo podobný problém a vyřěšil? Crm za lomítkem (www.domain.tld/crm) není řešení.
Díky
- Retrox
- Člen | 11
Asi někde dělám chybu, ale v bootstrapu mám
<?php
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$container->router[] = $crmRouter = new RouteList('Crm');
$crmRouter[] = new Route('//crm.<domain>.<tld>/<presenter>/<action>[/<id>]', 'Default:default');
$container->router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
} else {
$container->router = new SimpleRouter('Front:Default:default');
}
?>
a aplikace na subdoméně mně u odkazu napíše: <a n:href=„Codebook:default“>odkaz</a> hlasi error no route for Crm:Codebook:default().
Když zadám odkaz manuálně (http://crm.domain.tld/…book/default) tak vše proběhne vpořádku.
- frosty22
- Člen | 373
Nevím to jistě, ale nejsem si jist těmi parametry „domain“ a „tld“ → pokud jsou to před-definované parametry v nette, tak to je cool a podívám se na to (to by mě též zajímalo), ale pokud ne, tak je chyba tady a zkus to s pevnou URL:
$crmRouter[] = new Route(‚//crm.blabla.cz/<presenter>/<action>[/<id>]‘, ‚Default:default‘);
Pokud ti to pak bude generovat korektně, tak je chyba tady a musíš si vytáhnout tu doménu jinak, třeba z containeru přes objekt request
- frosty22
- Člen | 373
Tak to nebyl problém jinde :) Pouze jsi ho vyřešil jinak → čili před-definované parametry nejsou, a pak tedy je možnost, buď definovat tyto parametry v presenteru a nastavit jim hodnoty, nebo je definovat v routě, jak jsem ukazoval výše na pevno, což není cool, a nebo takto:
<?php
$crmRouter[] = new Route('//crm.<domain=blabla>.<tld=com>/<presenter>/<action>[/<id>]', 'Default:default');
?>