2016-04-29 14 views
0

Twig配列にネストされたコンテンツがあります。私は日を持っているそれぞれのヶ月、持っている:私はそれの下で、各月のサブ・タイトルと一日のテキストを印刷しようとしているループ内のループをTwigで印刷しますか?

{% set mock = { 
    main_title: 'Main title', 
    months: 
    [ 
     { 
     sub_title: 'Title 1', 
     days: [ 
      { 
      monday: 'Lorum', 
      tuesday: 'Ipsum' 
      } 
     ] 
     }, 
     { 
     sub_title: 'Title 2', 
     days: [ 
      { 
      monday: 'Dolorem', 
      tuesday: 'Neque' 
      } 
     ] 
     } 
    ] 
    } 
%} 

{% include "component.twig" %} 

:私のpage.twigで

<h2>Title 1</h2> 
<h3>Lorum</h3> 
<h3>Ipsum</h3> 

<h2>Title 2</h2> 
<h3>Dolorem</h3> 
<h3>Neque</h3> 
component.twigで

{% for m in months %} 
    <h2>{{ m.sub_title }}</h2> 

    {% for d in months.days %} 
     <h3>Print test</h3> 
    {% endfor %} 

{% endfor %} 

<h2>の月のsub_titleが印刷されて罰金が、私も、GEはできません何ヶ月も正しくループする日数。

答えて

1

間違いは2番目のループにあるようです。 months.daysの代わりに、m.daysを使用する必要があります。

最初のループは月を変数mにプルします。あなたの主な配列の月には要素日がありませんが、個々の月ごとに、内部ループには現在印刷する内容がありません。

このテンプレートがautoescapeを使用していない場合は、私はサイドノートと同様に、エスケープを追加することをお勧めします。

{% for m in months %} 
    <h2>{{m.sub_title| e}}</h2> 
    {% for d in m.days %} 
    <h3>{{ d| e }}</h3> 
    {% endfor %} 
{% endfor %} 

------編集-----

私はあなたのサンプルの配列が内部の代わりに、単一のレベルであることのハッシュと配列「日」を持っている最初のパスで逃しました。この場合、実際には、日のキーに相当する配列(配列の配列のいずれにしてもPHPにあります)があります。

この

はこれがない日のすべてのために、月曜日のために今だけH3を印刷ん

{% for m in months %} 
    <h2>{{m.sub_title| e}}</h2> 
    {% for d in m.days[0] %} 
    <h3>{{ d| e }}</h3> 
    {% endfor %} 
{% endfor %} 
+0

この場合には、トリックを行う必要があります。 – Evans

+0

私の答えが反映されているので、あなたの「日」キーは、1つのレベルではなくハッシュを含む配列であることを忘れていました。これで今やトリックを行うはずです。 –

関連する問題