2017-09-09 25 views
1

私はtwigコードに私のPHPコードを変換しようとしました。致命的なエラー:メッセージ '予期しないトークン "句読点を持つ未知の例外' Twig_Error_Syntax '

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 %} 

ますが、エラーを次取得ありません。

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unexpected token "punctuation" of value "[" ("end of statement block" expected) in....

ここで何が間違っていますか?どのようにこのコードを正しく小枝に書き込むのですか?

答えて

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 %} 
+0

感謝。私のコードで正常に動作します。コードのわずかな変更。私は更新コードを持っています。 – user8302249

+0

私は説明しようとしました。しかし、価値を得ることはありません。私は何かを試してみた。いかなる提案もお願いします。 {%endif%} '*%my_description = my_description | merge({(language.language_id).description: 'My Description'})%} { ($ my_description ['language_id "] [' description '])){$ my_description [$ language [$ language [$ language]} $ { ?> ' – user8302249

+0

' language.language_id.description'の全体を 'language.language_id'だけでなく括弧で囲む必要があります:' 'language_id '']] ['description'] =" MY DESCRIPTION " {%set my_description = my_description | merge({(language.language_id.description): 'My Description'})%} ' –

関連する問題