LinkGenerator generuje absolutní odkazy na vývojové instanci
- sjiamnocna
- Člen | 28
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)
- sjiamnocna
- Člen | 28
V Routeru jsem nic relevantního nenašel, viz. edit., ale jestli budeš mít nějaký nápad, budu rád :)
- nightfish
- Člen | 519
@sjiamnocna Můžeš zkusit
$this->linkGenerator->withReferenceUrl('http://localhost:8080/')->link(...);
Viz dokumentaci
- sjiamnocna
- Člen | 28
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