我尝试将我的 php 代码转换为 Twig 代码。
代码:
<?php foreach ($languages as $language) {
if(empty($my_title[$language["language_id"]])){$my_title[$language["language_id"]] ="MY Title";}
?>
Run Code Online (Sandbox Code Playgroud)
给树枝:
{% for language in languages %}
{% if not my_title[language.language_id] %}
{% set my_title[language.language_id] = "MY Title" %}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但是,确实得到以下错误。
致命错误:未捕获的异常 'Twig_Error_Syntax' 带有消息 'Unexpected token "punctuation" of value "[" ("end of statement block" expected) in....
这里有什么问题?如何在树枝中正确编写此代码?
您不能直接在 Twig 中向数组或散列添加项目。您需要使用merge过滤器,如下所示:
{% set my_title = my_title|merge({(language.language_id): 'MY Title'}) %}
Run Code Online (Sandbox Code Playgroud)
注意周围的括号language.language_id。那是因为散列键不能是表达式,而是文字。周围的括号language.language_id确保在用作散列键之前评估表达式。
此外,if如果my_titlehash 没有将密钥存储在language.language_id变量中,您的语句将失败。你应该is defined在那里使用test 。
完整示例:
{% for language in languages %}
{% if not my_title[language.language_id] %}
{% set my_title = my_title|merge({(language.language_id): 'MY Title'}) %}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)