【问题标题】:Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unexpected token "punctuation"致命错误:未捕获的异常“Twig_Error_Syntax”和消息“意外的标记”标点符号“
【发布时间】:2018-02-18 03:29:58
【问题描述】:

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

php代码:

<?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_Error_Syntax” '值“[”的意外标记“标点符号”(“语句块结束” 预期)在....

这里有什么问题?如何在 twig 中正确编写这段代码?

【问题讨论】:

    标签: php twig


    【解决方案1】:

    您不能直接在 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 %}
    

    【讨论】:

    • 谢谢。在我的代码中工作正常。只是,代码的微小变化。我有更新代码。
    • 我已经尝试过描述。但是,没有获得价值。我尝试过类似的东西。请有任何建议。 {% if not my_description[language.language_id].description %} {% set my_description = my_description|merge({ (language.language_id).description : 'My Description'}) %} {% endif %} php 代码有: &lt;?php foreach ($languages as $language) { if(empty($my_description[$language["language_id"]]['description'])){$my_description[$language["language_id"]]['description'] ="MY Description";} ?&gt;
    • 您需要将整个language.language_id.description 括在括号中,而不仅仅是language.language_id,像这样:{% set my_description = my_description|merge({ (language.language_id.description): 'My Description'}) %}
    • 哦,我想我明白了。这对你有用吗:{% set my_description = my_description|merge({ (language.language_id): {'description': 'My Description'}}) %}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多