如何解决如何手动获取已使用过滤器将数据格式化为日期的 JSON 数组中的第一个元素项?
我试图只检索数组中的第一个实例,该数组在给定的现实世界事件(例如定期举行的每周会议)的不同键内包含多个时隙。
{% 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
元素实例数计数。
长话短说,其中一些事件包含太多时间段,在设计用例中没有实际意义,因此我基本上只想将其缩短到第一个实例的开始日期,然后显示一个文本说“+ ## more”
以下是我想要完成的成功场景示例:
解决方法
将其移至答案,因为它已通过评论解决:
看起来我需要从数组 {{event.timeslots.0.start_date | date("D,M j @ g:i a") }}
中手动获取零键,因为使用 | 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 %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。