升级Drupal 10时TWIG代码出现语法错误,请求排查解决
Drupal 10升级后Twig模板语法错误修复
错误信息
Twig\Error\SyntaxError: 意外的标点符号 token "("(预期是“打印语句结束”)。位于 Twig\TokenStream->expect()
问题原因
- Twig 3.x语法严格性提升:Drupal 10使用Twig 3.x版本,对参数分隔的空格要求更严格,原代码中
t过滤器的两个数组参数之间逗号后无空格,导致解析错误; - 属性修改写法不符合规范:直接在打印语句中调用
attributes.addClass()的写法,在新版Twig环境下会触发语法解析问题,正确方式是用{% do %}标签先修改属性对象。
修复后的代码
{% if 'export' in url %} {% do attributes.addClass('btn btn-success') %} <a href="{{ url }}"{{ attributes }}> {{ '@format export'|t({'@format': 'Export files'}, {'context': 'kjus'}) }} </a> {% else %} {% do attributes.addClass('btn btn-success') %} <a href="{{ url }}"{{ attributes }}> {{ '@format csv'|t({'@format': 'CSV'}, {'context': 'kjus'}) }} </a> {% endif %}
修复说明
- 改用
{% do %}标签调用attributes.addClass(),先修改属性对象,再在<a>标签中输出{{ attributes }},这是Drupal Twig模板修改属性的标准写法; - 给
t过滤器的两个参数之间添加空格,符合Twig 3.x的语法要求; - 调整代码换行,提升可读性。
内容的提问来源于stack exchange,提问作者yTakeddine
相关产品推荐
相关产品推荐

