Twig problem with php 7.4 in write variable

心已入冬 提交于 2020-08-27 05:52:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!