Slim3 + Twig> href链接的完整URL而不是相对链接。

时间:2017-10-27 21:04:47

标签: php twig slim-3

我和Slig一起使用Slim3。现在,当我试图建立&#34;在树枝模板中添加myspl %>% bind_cols() %>% setNames(paste0(names(mydf), rep(c("A", "B"), each = 2))) # A tibble: 5 x 4 numsA ltrsA numsB ltrsB <dbl> <chr> <dbl> <chr> 1 0 a 5 b 2 1 a 6 b 3 2 a 7 b 4 3 a 8 b 5 4 a 9 b 帮助器的链接我不会获得path_for这样的完整网址,而只是https://domain.tld/path/to/something。我错过了什么?

2 个答案:

答案 0 :(得分:0)

如果您希望 Twig 帮助 path_for 返回完整的网址而不是绝对网址,则需要设置 basePath 属性在路由器上。

抓住容器:

$container = $app->getContainer();

抓住路由器:

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

设置basePath:

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

答案 1 :(得分:0)

我有点攻击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的解决方案为什么不起作用。它真的应该。但在我的情况下,它只是没有...欢迎评论我可能搞砸的地方! :)