Drupal / Twig / Symfony Routing为base_url返回“null”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drupal / Twig / Symfony Routing为base_url返回“null”相关的知识,希望对你有一定的参考价值。

我已经研究了将近两个星期的答案,并最终决定我需要寻求帮助。我对php / Drupal很不熟悉,但继承了这样一个项目来更新和维护。该项目在Drupal 8.3.7上运行,并由IIS 6.2托管。

由于某些未知原因,我的html.twig文件中的链接返回“null”base_url。所以例如......

<a href="/home"> ... </a>

将链接到“null / home”...经过大量的黑客攻击并试图弄清楚我是否可以手动设置$ base_url(不是最佳实践,我知道,但我只是需要查看是否可能),我发现了两种奇特的行为:

A.如果在关联的控制器中我创建了一个变量$ temp_base_url并硬编码值“localhost”并尝试将以下内容放入我的html.twig文件中(其中item.url =“/ home”)...

<a href="http://{{temp_base_url}}{{item.url}}">http://{{temp_base_url}}{{item.url}}</a>

锚标记之间的文本将正确显示为http://localhost/home,而实际链接将指向null / home。

B.另一方面,如果我将$ temp_base_url指定为等于“http://localhost”并输入以下代码......

<a href="{{temp_base_url}}{{item.url}}">{{temp_base_url}}{{item.url}}</a>

锚标记之间的文本(aga)将正确显示为http://localhost/home,而实际链接现在将尝试将您引导至http://localhost/null/home

问题不在于全局变量$ base_url,因为当我在Controller中测试这个时,$ base_url正确地将自己设置为“localhost”,所以我怀疑Symfony或其他东西错误地渲染路径(任何尝试使用'path'或'url'也导致类似的空问题)。

所以我的问题是:这些空值来自哪里?如何让IIS / Drupal选择适当的基本URL进行路由?

答案

你可以使用这个url('<front>')

{{ url('<front>') }}{{item.url}}

以上是关于Drupal / Twig / Symfony Routing为base_url返回“null”的主要内容,如果未能解决你的问题,请参考以下文章

从 8 升级到 Drupal 9 出现 Twig 相关错误

如何在 Symfony 4 中更新 Twig?

Symfony 3.2:twig/twig v2.0.0 需要 php ^7.0

php Drupal Twig主题建议

使用 Symfony2/Twig 创建引导轮播

在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件