代码之家  ›  专栏  ›  技术社区  ›  user8302249 Edi Modrić

致命错误:未捕获异常“Twig\u error\u Syntax”,消息“意外标记”标点符号

  •  2
  • user8302249 Edi Modrić  · 技术社区  · 7 年前

    我尝试将我的php代码转换为Twig代码。

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

    到细枝:

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

    但是,确实会出现以下错误。

    值“[”(“语句块结尾”)的意外标记“标点” 预期)在。。。。

    这里怎么了?如何在twig中正确编写此代码?

    1 回复  |  直到 7 年前
        1
  •  5
  •   user8302249 Edi Modrić    7 年前

    您不能直接将项目添加到细枝中的数组或散列中。你需要使用 merge

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

    注意周围的括号 language.language_id . 这是因为哈希键不能是表达式,而是文字。圆括号 语言语言id

    此外,您的 if 语句将失败,如果 my_title 哈希没有存储在中的密钥 变量你应该使用 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 %}