Moduly jedné aplikace nad ruznými subdoménami

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

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

22
Člen | 1478
+
0
-

Proč si nepřečteš dokumentaci?

Retrox
Člen | 11
+
0
-

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
+
0
-

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

Retrox
Člen | 11
+
0
-

Problem byl nakonec trochu jinde. Routy byli vporadku jen bylo potreba dodefinovat do BasePresentru persistentni promenne tld a domain a pak vse zacalo fungovat jak melo.

frosty22
Člen | 373
+
0
-

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');
?>