Javascript 中允许使用 twig 语法吗?
Is twig syntax allowed in Javascript?
我目前正在一家公司实习,我遇到了一段看起来很奇怪的代码,它抛出了很多语法错误,比如 ')' expected
或 Expression 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
方面我完全是个菜鸟,所以我不确定 Javascript
和 Twig
是否真的允许你这样做,但事实并非如此在阅读了一些文档后,我觉得这很合乎逻辑,但如果它确实被允许,是否有任何方法可以修复这些语法错误?
当然允许。 Twig 在服务器端执行,只会生成纯文本作为输出。但是,当变量 current_day
未定义、null 或空字符串时,您发布的代码片段的输出肯定会产生语法错误:
模板
$('#collapseTable' + {{ current_day }}).collapse('show');
current_day
未定义、null 或空字符串时的输出:
$('#collapseTable' + ).collapse('show');
由于您没有提供更多信息,我只能猜测 solution/use-case
- 确保
current_day
不是未定义的
这个解决方案需要定义一个(有效的)javascript 变量,假设 foo
被分配给 current_day
,那么输出将是:
$('#collapseTable' + foo).collapse('show');
这意味着 (javascript) 变量 foo
需要在脚本中定义。但是,每个无效的变量名都会产生另一个语法错误,例如current_day
是 foo bar
:
$('#collapseTable' + foo bar).collapse('show');
- 在选择器内移动 twig 变量 w/out 在
JS
内连接
$('#collapseTable{{ current_day }}').collapse('show');
我目前正在一家公司实习,我遇到了一段看起来很奇怪的代码,它抛出了很多语法错误,比如 ')' expected
或 Expression 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
方面我完全是个菜鸟,所以我不确定 Javascript
和 Twig
是否真的允许你这样做,但事实并非如此在阅读了一些文档后,我觉得这很合乎逻辑,但如果它确实被允许,是否有任何方法可以修复这些语法错误?
当然允许。 Twig 在服务器端执行,只会生成纯文本作为输出。但是,当变量 current_day
未定义、null 或空字符串时,您发布的代码片段的输出肯定会产生语法错误:
模板
$('#collapseTable' + {{ current_day }}).collapse('show');
current_day
未定义、null 或空字符串时的输出:
$('#collapseTable' + ).collapse('show');
由于您没有提供更多信息,我只能猜测 solution/use-case
- 确保
current_day
不是未定义的
这个解决方案需要定义一个(有效的)javascript 变量,假设 foo
被分配给 current_day
,那么输出将是:
$('#collapseTable' + foo).collapse('show');
这意味着 (javascript) 变量 foo
需要在脚本中定义。但是,每个无效的变量名都会产生另一个语法错误,例如current_day
是 foo bar
:
$('#collapseTable' + foo bar).collapse('show');
- 在选择器内移动 twig 变量 w/out 在
JS
内连接
$('#collapseTable{{ current_day }}').collapse('show');