将当前项与f:for循环中的前一项进行比较

时间:2016-10-31 19:27:56

标签: typo3 fluid extbase typo3-6.2.x

我想按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

2 个答案:

答案 0 :(得分: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\')}')}">
...

答案 1 :(得分:1)

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