【问题标题】:Compare current item with previous in f:for loop [duplicate]将当前项目与 f:for 循环中的前一个项目进行比较 [重复]
【发布时间】:2016-10-31 19:27:55
【问题描述】:

我想按startDate(以后按lawyer.fullName)对我的约会进行分组。
所以我想显示约会的startDate,只有当前一个约会的startDate不同时。
这是我尝试过的。但我真的不知道如何从之前的操作中获取对象。 第 3 行是现在发生故障的地方...

<f:widget.paginate objects="{appointments}" as="paginatedAppointments">
        <f:for each="{paginatedAppointments}" as="appointment" iteration="i">
            <f:if condition="{appointment.startDate->f:format.date(format:'d.m.Y')} != {0:paginatedAppointments.{i.index-1}.startDate->f:format.date(format:'d.m.Y')}">
                <f:then>
                    <br/>
                    {appointment.startDate->f:format.date(format:'d.m.Y')}<br/>
                    {appointment.startTime->f:format.date(format:'H:i')}<br/>
                    {appointment.lawyer.fullName}<br/><br/>
                </f:then>
                <f:else>
                    {appointment.startTime->f:format.date(format:'H:i')}<br/>
                    {appointment.lawyer.fullName}<br/>
                    <br/><br/>
                </f:else>
            </f:if>
        </f:for>
</f:widget.paginate>

如果您有答案,请记住:如果可能的话,我真的很想继续使用这个有用的分页小部件

--编辑--

我注意到另一个问题的答案在 DateTime 对象的分组方面完美地解决了我的问题,因此我将我的问题标记为重复。感谢 Jigal 的回答,我找到了,因为我忘记了 f:groupedFor

【问题讨论】:

    标签: typo3 fluid extbase typo3-6.2.x


    【解决方案1】:

    您可以创建一个 ViewHelper 与某个值进行比较作为参数,将 startDate 保存在静态变量中,如果它与上一个不同,则返回 true/false。如果它具有某种重置功能,它也很有用,就像这样:

    {vendor:utility.compareLast(reset:1)}
    
            <f:for each="{paginatedAppointments}" as="appointment" iteration="i">
                <f:if condition="{vendor:utility.compareLast(value:'{appointment.startDate->f:format.date(format:\'d.m.Y\')}')}">
    ...
    

    【讨论】:

    • 因为我从来没有创建过 ViewHelper,所以现在要花太多时间来学习它,但我稍后会看 - 谢谢!
    • 创建 ViewHelper 如此简单,不值得不创建。
    • 好的,我会尝试制作一个 - 感谢您的鼓励! :)
    【解决方案2】:

    使用f:groupedFor 视图助手,您可以按开始日期对项目进行分组。在内部循环中,您可以检查迭代器是否是第一个,并在这种情况下显示 startDate。见Fluid Guide

    【讨论】:

    • 不幸的是,它显然不适用于 DateTimeObjects,但在我的情况下,它不适用于律师分组!
    • 也许它不是为与 DateTimeObjects 一起工作而设计的。将查看核心代码,看看是什么阻止了它的工作。
    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多