1

我试图仅检索数组中的第一个实例,该数组包含给定真实世界事件(例如重复的每周会议)的单独键内的多个时隙。

这是 twig 代码当前的样子,生成每个时间段的列表:

 {% for event in data %}
  <img src="{{event.image}}">
   <h1>{{event.title}}</h1>
    <p>{% for t in event.timeslots %}{{t.start_date | date("D, M j @ g:i a") }} - 
{{t.end_date | date("D, M j @ g:i a") }}<br>
       {% endfor %}
      <a href="https://www.example.com/{{event.id}}"
target="_blank">See Details</a></p>
    <hr>
 {% endfor %}

这就是它的样子:

在原始树枝代码中显示的多个时隙的屏幕截图

但是鉴于时间戳是 unix 格式,我已经添加了一个| date ()过滤器,所以我假设添加一个| first过滤器应该可以过滤掉数组中第一个日期的所有日期,正如我在这里尝试的那样:

    {{t.start_date | date("D, M j @ g:i a") | first }}

但是,显示的结果内容是第一个日期的第一个字母event.timeslots.start_date重复元素实例数的完整计数。

长话短说,其中一些事件包含太多时间段,在设计用例中没有实际意义,所以我基本上只想将其缩短到第一个实例的开始日期,然后显示一个文本,然后显示“+ ## 更多的”

这是我想要完成的成功场景示例:

仅显示数组的第一个元素的理想输出的屏幕截图

4

1 回答 1

1

将其移至答案,因为它已通过评论解决:

看起来我需要手动从数组中获取零键,{{event.timeslots.0.start_date | date("D, M j @ g:i a") }}因为 using| first只是为数组中存在的每个键重复第一个字符串。

此外,我还能够弄清楚如何在第一个日期之后显示一个动态文本,该文本将其他日期通知为计数,并在语法上格式化单词“time/s”的复数/单数形式。见下文:

{% for event in data %}
 <img src="{{event.image}}">
  <h1>{{event.title}}</h1>
   <p><strong>{{event.timeslots.0.start_date | date("D, M j @ g:ia") }}
{% if event.timeslots | length > 0 %} + {{event.timeslots | length}} 
more time{% if event.timeslots | length > 1 %}s{% endif %}{% endif %}</strong></p>
   <p><a href="https://www.example.com/{{event.id}}" target="_blank">
See Details</a></p>
  <hr>
 {% endfor %}
于 2021-07-27T04:42:25.703 回答