NodeJs Twig ForEach无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJs Twig ForEach无效相关的知识,希望对你有一定的参考价值。

我正在使用NodeJS和Twig构建一个小型应用程序作为学校项目的一部分。

除了我的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。当Sessions为空时,将打印{{ Message }}

在foreach中只写{{ "Hello World" }}也不会产生任何输出。

否则,我最终会得到一个只包含标题的页面。

编辑:

当我在Sessions上使用控制台时,我得到了这个:

执行console.log(会话) 未定义 [NataSession { id:901, 纬度:50.85, 经度:4.35, 观察:[], sessionEnd:'2017年12月8日下午5:15:00', sessionStart:'2017年12月8日下午5:06:00', 状态:'拒绝', 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});
答案

事实证明问题本身不是for,而是{{ 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。

以上是关于NodeJs Twig ForEach无效的主要内容,如果未能解决你的问题,请参考以下文章

锚元素上的空 href 属性在 HTML 中有效,但在 Twig 中无效

没有加载Twig功能

Twig中的Break语句[重复]

nodejs常用代码片段

为代码“DateTime::createFromFormat”的 foreach () 提供的参数无效?

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面