Slim3 + Twig > Full URL 用于 href 链接而不是相关链接。

Slim3 + Twig > Full URL for href links instead of relative ones.

我将 Slim3 与 Twig 一起使用。现在,当我尝试 "build" link 与 path_for 助手在树枝模板中时,我没有像 https://domain.tld/path/to/something 那样得到完整的 URL,而是只是 /path/to/something。我错过了什么?

如果你想要 Twig 助手 path_for 到 return 完整的 URL不仅仅是绝对路径,您需要在路由器上设置 basePath 属性。

抓取容器:

$container = $app->getContainer();

抢路由器:

$router= $container->get('router');

设置基本路径:

$router->setBasePath('https://domain.tld');

我已经破解了 slim/twig-view 扩展程序以使其正常工作。所以在 TwigExtension.php 我改变了

public function pathFor($name, $data = [], $queryParams = [], $appName = 'default') 
{
    return $this->router->pathFor($name, $data, $queryParams);
}

public function pathFor($name, $data = [], $queryParams = [], $appName = 'default')
{
    if (getenv('APP_HOST') != '') {
        return getenv('APP_HOST') . $this->router->pathFor($name, $data, $queryParams);
    }
    return $this->router->pathFor($name, $data, $queryParams);
}

打赌有更优雅的方法来解决这个问题。但目前修复了 我的 问题。

这当然需要将 .env 文件与库一起使用,使变量可通过 getenv() 访问。为此,我使用 PHPDotenv。我想你可以从各种角度来解决这个问题。

我仍然不知道为什么@Scriptonomy 的解决方案不起作用。真的应该。但就我而言,它并没有……欢迎对我可能搞砸的地方发表评论! :)