14

我在我的项目中使用 php7.3 并在这个项目中使用 Twig

将我的 php 版本升级到 7.4 后,我在树枝渲染中出现了一些错误。

我通过 Twig 变量设置了一些 html 类

例如:

<body class='{{global.direction}} preload {{bodyclass}}'></body>

使用 php 7.3 时,Twig 渲染的输出为:

<body class='ltr preload main'></body>

我的来源没有问题。

但是当我的 php 升级到 php 7.4 时,输出发生了变化!

<body class='ltr preloadmain'></body>

在变量之前在空间上删除了树枝,并且在我的源代码中发生了非常错误:/

从 Twig 到处调用变量,Twig 删除它之前的所有空间!

有什么解决办法吗?

如何解决?

4

4 回答 4

7

对我有用的一般答案(Opencart Twig)与评论中提到的修复 Simo Heinonen 有关,即 https://github.com/twigphp/Twig/pull/3004/commits/1fb0f9701d8443083495cd2645e8a0c45d54c34d

不同版本的代码与上面显示的代码有些不同。对于 Opencart Twig(大多数版本,但使用 oc 3.0.3.3 进行了测试),显然修复了它:

在文件 Lexer.php 中找到函数 lexData 第 163 行更改:

if (isset($this->positions[2][$this->position][0]) ) {
    $text = rtrim($text);
}

if (isset($this->positions[2][$this->position][0]) && ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0])) {
   $text = rtrim($text);
}
于 2020-06-24T12:03:36.967 回答
1

Twig 在 PHP 7.4 上有问题。您可以更改 PHP 版本或将 Twig 升级到最新版本

于 2020-08-19T16:42:51.233 回答
0

我们刚刚发布了 Craft 2.8.0,其中包括 Twig 1.42.4 和几个 PHP 7.4 修复。

请注意,此更新还将 Craft 的最低PHP 要求提高到 5.5。

于 2019-12-15T14:42:49.827 回答
-1

twig在我的symfony项目中使用,我无法重现您描述的行为。

作为一个(丑陋的)修复,也许您可​​以更改为:

<body class='{{ global.direction ~ ' preload ' ~ bodyclass }}'></body>
于 2019-12-09T12:24:19.753 回答