写入变量中 php 7.4 的 Twig 问题



我在我的项目中使用 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>

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

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

有什么解决办法吗?

如何解决?

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

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

在文件中查找词法分析器.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);
}

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

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

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

同样的问题在这里是一个使用 Twig 1.x 的旧项目,没有更新选项。 到目前为止,我们已经解决了在模板中在必要时插入空格的 html 代码的问题。我的意思是:

<body class='{{global.direction}} preload &#32; {{bodyclass}}'></body>

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

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

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

最新更新