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 的解决方案不起作用。真的应该。但就我而言,它并没有……欢迎对我可能搞砸的地方发表评论! :)
我将 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 的解决方案不起作用。真的应该。但就我而言,它并没有……欢迎对我可能搞砸的地方发表评论! :)