问题
I using php7.3 on my project and use Twig in this project
After upgrade my php version to 7.4 i have some error in twig rendering.
I set some html class by Twig variable
For example:
<body class='{{global.direction}} preload {{bodyclass}}'></body>
When using php 7.3 the output of Twig render is:
<body class='ltr preload main'></body>
And no problem in my source.
But when my php upgraded to php 7.4 the output was changed!
<body class='ltr preloadmain'></body>
Twig removed on space before variable and very error was happening in my source :/
Everywhere call variable from Twig, The Twig remove all space before it!
Any solution?
How to fix it?
回答1:
The general answer that worked for me (Opencart Twig too) is related to the fix Simo Heinonen mentioned in the comments i.e. https://github.com/twigphp/Twig/pull/3004/commits/1fb0f9701d8443083495cd2645e8a0c45d54c34d
Different versions will have somewhat different code than shown above. For Opencart Twig (most versions but tested with oc 3.0.3.3) what apparently fixed it was :
Find in file Lexer.php function lexData line 163 change:
if (isset($this->positions[2][$this->position][0]) ) {
$text = rtrim($text);
}
to
if (isset($this->positions[2][$this->position][0]) && ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0])) {
$text = rtrim($text);
}
回答2:
I use twig
in my symfony
project and I cannot reproduce the behaviour your describing.
As an (ugly) fix maybe you could change to :
<body class='{{ global.direction ~ ' preload ' ~ bodyclass }}'></body>
回答3:
We just released Craft 2.8.0, which includes Twig 1.42.4 with a couple PHP 7.4 fixes.
Note that this update also bumps Craft’s minimum PHP requirement up to 5.5.
回答4:
Twig has a problem with PHP 7.4. you can change PHP version or upgrade twig to latest version
来源:https://stackoverflow.com/questions/59248533/twig-problem-with-php-7-4-in-write-variable