我在我的项目中使用 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   {{bodyclass}}'></body>
我在symfony
项目中使用了twig
,但我无法重现您描述的行为。
作为一个(丑陋的(修复,也许你可以更改为:
<body class="{{ global.direction ~ ' preload ' ~ bodyclass }}"></body>