Javascript 中允许使用 twig 语法吗?

Is twig syntax allowed in Javascript?

我目前正在一家公司实习,我遇到了一段看起来很奇怪的代码,它抛出了很多语法错误,比如 ')' expectedExpression expected。这些语法错误出现在我的文本编辑器中的 if else 语句和 current_day 变量的大括号中。看起来有人试图在 Javascript tags.

中使用 Twig 语法
{% block scripts %}
  <script>
   {% if current_week == week_number %}
   $('#collapseTable' + {{ current_day }}).collapse('show');
   {% else %}
   $('#collapseTable0').collapse('show');
   {% endif %}
  </script>
{% endblock %}

Twig 方面我完全是个菜鸟,所以我不确定 JavascriptTwig 是否真的允许你这样做,但事实并非如此在阅读了一些文档后,我觉得这很合乎逻辑,但如果它确实被允许,是否有任何方法可以修复这些语法错误?

当然允许。 Twig 在服务器端执行,只会生成纯文本作为输出。但是,当变量 current_day 未定义、null 或空字符串时,您发布的代码片段的输出肯定会产生语法错误:

模板

$('#collapseTable' + {{ current_day }}).collapse('show');

current_day 未定义、null 或空字符串时的输出:

$('#collapseTable' + ).collapse('show');

由于您没有提供更多信息,我只能猜测 solution/use-case

  1. 确保 current_day 不是未定义的

这个解决方案需要定义一个(有效的)javascript 变量,假设 foo 被分配给 current_day,那么输出将是:

$('#collapseTable' + foo).collapse('show');

这意味着 (javascript) 变量 foo 需要在脚本中定义。但是,每个无效的变量名都会产生另一个语法错误,例如current_dayfoo bar:

$('#collapseTable' + foo bar).collapse('show');

  1. 在选择器内移动 twig 变量 w/out 在 JS
  2. 内连接
$('#collapseTable{{ current_day }}').collapse('show');