2017-12-20 10 views
0

NodeJSとTwigを使用して学校プロジェクトの一部として小さなアプリケーションを構築しています。NodeJs Twig ForEachが機能しない

私はforeach文を除いて、データを印刷するのに何の問題もありません。

マイビュー:

{% extends 'layout.twig' %} 

{% block body %} 
    <h1>My sessions</h1> 
    {% for session in Sessions %} 
    <div class="container"> 
     <h3> 
      {{ link(session.sessionStart,"/sessions/"+session.id) }} 
     </h3> 
     <p>Latitude : {{ session.latitude }}</p> 
     <p>Longitude : {{ session.longitude }}</p> 
     <p>Number of observations : {{ session.observations.length }}</p> 
     <p>Status : {{ session.status }}</p> 
    </div> 
    {% else %} 
     <p>{{ Message }}</p> 
    {% endfor %} 

{% endblock %} 

私はデータがSessionsに存在していると確信しています。私はそうのように、最初の要素の出力idにしようとすると:

{{ Sessions[0].id }} 

その後、idが印刷されます。セッションが空の場合、{{ Message }}が印刷されます。

foreach内にのみ{{ "Hello World" }}を書き込んでも出力が生成されません。

それ以外の場合は、タイトルのみを含むページになります。

EDIT:

Iがセッションにコンソールを使用すると、私はこれを取得:

にconsole.log(セッション)
未定義
[NataSession {
番号:901、
を 緯度:50.85,
経度:4.35,
観察:[]、
sessionEnd: '2017年12月8日午前5時15分00秒PM'、
sessionStart: '2017年12月8日午前5時06分00秒PM'、
ステータス: '拒否'、
にuserId:1}]

そして、私はそれをこのように構築:

client.get(this.restBaseUrl+"sessions/user/"+user.id,function(data,response){ 
      console.log(data); 
      console.log(response); 
      var Sessions = []; 
      var i=0; 
      for(i=0;i<data.length;i++){ 
       Sessions.push(new NataSession()); 
       Sessions[i].id   = data[i].id   ; 
       Sessions[i].latitude = data[i].latitude ; 
       Sessions[i].longitude = data[i].longitude ; 
       Sessions[i].observations= data[i].observations; 
       Sessions[i].sessionEnd = data[i].sessionEnd ; 
       Sessions[i].sessionStart= data[i].sessionStart; 
       Sessions[i].status  = data[i].status  ; 
       Sessions[i].userId  = data[i].userId  ; 
      } 
      var message = ""; 
      if(data.length == 0){ 
       message = "You don't have any sessions yet." 
      } 
      res.render('sessions', { title: 'Natagora - Sessions',Sessions:Sessions,Message:message}); 
+0

セッションをダンプするとどうなりますか? iterableですか? – entio

+0

これを質問に追加しました。私はhttps://twig.symfony.com/doc/2.x/tags/for.htmlにあるヘルパーを使用するための指示に従います。ここではhttps://www.w3schools.com/js/js_arrays.asp配列の作成。私の間違いで申し訳ありませんが、英語は私の母国語ではありません。 –

答えて

0

問題は、それ自体でのためではなかったが判明、しかしむしろここ{{ link(session.sessionStart,"/sessions/"+session.id) }}

は、作業コードです:

{% extends 'layout.twig' %} 
{% block body %} 
    <h1>My sessions</h1> 
    {% for session in Sessions %} 
    <div class="container" style="margin: 30px;padding:15px; background-color: gainsboro"> 
     <h3> 
      <a href="{{ session.link }}">{{ session.sessionStart }}</a> 
     </h3> 
     <p>Latitude : {{ session.latitude }}</p> 
     <p>Longitude : {{ session.longitude }}</p> 
     <p>Number of observations : {{ session.observations.length }}</p> 
     <p>Status : {{ session.status }}</p> 
     <button>Share on Facebook</button> 
    </div> 
    {% else %} 
     <p>{{ Message }}</p> 
    {% endfor %} 

{% endblock %} 

linkは、追加してバックエンドで生成されるプロパティです。これは、セッションページへの相対URLです。

関連する問題