LinkGenerator generuje absolutní odkazy na vývojové instanci

sjiamnocna
Člen | 28
+
0
-

Ahoj,

mám na starosti údržbu projektu na Nette, za využití Presenterů, Latte šablon ap.

Vytvořil jsem separátní konfiguraci pro Docker-compose, tak aby fungovala na lokále, ale problém je, že LinkGenerator produkuje absolutní odkazy ukazující na původní doménu aplikace, tj. nelze to dobře testovat.

Máte nějaký nápad, jak přinutit LinkGenerator, aby si převzal localhost:8080 jako svou adresu a ty linky generoval podle toho? Resp. generoval relativní odkazy od rootu webu (href="/jedna/dva")?

Nette šablony, presentery, makra nepoužívám, takže díky za nápady :)

Edit:
__________________________________________________

RouterFactory.php:

public static function createRouter(EnvironmentService $environmentService): RouteList
	{
		$router = new RouteList;
		if ($environmentService->getSubdomain() !== 'n') {
			/*webová část */
			$router
				->addRoute('jak-to-funguje', 'Front:Www:Static:about')
				->addRoute('cenik', 'Front:Www:Static:pricing')
				...
				->addRoute('/', 'Front:Www:Homepage:default');

		} else {
			// neveřejná část
			$router/*->withDomain('n.%sld%.%tld%')*/
				->addRoute('prihlaseni', 'Front:Www:Account:login')
				...
				->addRoute('w/<presenter>/<action>[/<id>]', ['module' => 'Front', 'presenter' => 'Dashboard', 'action' => 'default'])
				->addRoute('asist/<presenter>/<action>[/<id>]', ['module' => 'Assist', 'presenter' => 'Checks', 'action' => 'default'])
				->addRoute('admin/<presenter>/<action>[/<id>]', ['module' => 'Admin', 'presenter' => 'Dashboard', 'action' => 'default'])
				->addRoute('<presenter>/<action>[/<id>]', ['module' => 'Account', 'presenter' => 'Dashboard', 'action' => 'default']);
		}
		return $router;
	}

Koukal jsem do generovaných kontejnerů, jak vznikají odkazy, měly by vznikat z HttpRequest a ani v konfiguraci ani nikde jinde URL nevidím, což je fakt divné. Kaši jsem už smazal několikrát.

$this->refUrl = getService('http.request')->getUrl()->withoutUserInfo();
$url = $this->router->constructUrl($params, $this->refUrl);
return $url . $frag;

Editoval sjiamnocna (28. 9. 2022 10:01)

Pepino
Člen | 249
+
0
-

Ukaž router

sjiamnocna
Člen | 28
+
0
-

V Routeru jsem nic relevantního nenašel, viz. edit., ale jestli budeš mít nějaký nápad, budu rád :)

nightfish
Člen | 472
+
0
-

@sjiamnocna Můžeš zkusit $this->linkGenerator->withReferenceUrl('http://localhost:8080/')->link(...);

Viz dokumentaci

sjiamnocna
Člen | 28
+
0
-

Zdravím.
Tohle se vyřešilo – jeden z odkazů se skládal úplně jinak, než ostatní odkazy na webu pomocí proměnných s doménou a TLD… Bůhvíproč…

Každopádně díky za tipy