首页 文章

致命错误:未捕获的异常'Twig_Error_Syntax',消息“Unexpected token”标点符号“

提问于
浏览
1

我试图将我的PHP代码转换为Twig代码 .

PHP代码:

<?php foreach ($languages as $language) { 
    if(empty($my_title[$language["language_id"]])){$my_title[$language["language_id"]] ="MY Title";}
?>

到Twig:

{% for language in languages %}
    {% if not my_title[language.language_id] %}
      {% set my_title[language.language_id] = "MY Title" %}
    {% endif %}
{% endfor %}

但是,会出现以下错误 .

致命错误:未捕获异常'Twig_Error_Syntax',消息'意外令牌'标点符号“值”[“(”语句块结束“预期)....

这里有什么问题?如何在树枝上正确编写这段代码?

1 回答

  • 3

    您无法直接在Twig中将项添加到数组或散列 . 您需要使用 merge 过滤器,如下所示:

    {% set my_title = my_title|merge({(language.language_id): 'MY Title'}) %}
    

    请注意 language.language_id 周围的括号 . 那是因为哈希键不能是表达式而是文字 . language.language_id 周围的括号确保在用作哈希键之前计算表达式 .

    此外,如果 my_title 哈希没有将密钥存储在 language.language_id 变量中,则 if 语句将失败 . 你应该在那里使用 is defined 测试 .

    完整的例子:

    {% for language in languages %}
        {% if not my_title[language.language_id] %}
            {% set my_title = my_title|merge({(language.language_id): 'MY Title'}) %}
        {% endif %}
    {% endfor %}
    

相关问题