我试图将我的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' '意外的标记“标点符号”的值“[”(“结束语句块” 在...中预期...
这里有什么问题?如何在树枝中正确编写这段代码?
答案 0 :(得分:3)
您无法直接在Twig中向数组或哈希中添加项目。您需要使用merge
过滤器,如下所示:
{% set my_title = my_title|merge({(language.language_id): 'MY Title'}) %}
注意language.language_id
周围的括号。这是因为哈希键不能是表达式而是文字。围绕language.language_id
的括号确保在用作哈希键之前计算表达式。
此外,如果if
哈希没有将密钥存储在my_title
变量中,则language.language_id
语句将失败。你应该在那里使用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 %}