Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 在f:for循环中将当前项与上一项进行比较_Typo3_Fluid_Extbase_Typo3 6.2.x - Fatal编程技术网

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

Typo3 在f:for循环中将当前项与上一项进行比较,typo3,fluid,extbase,typo3-6.2.x,Typo3,Fluid,Extbase,Typo3 6.2.x,我想按开始日期(稍后按律师全名)对我的约会进行分组。 因此,我只想在前一次约会的startDate不同时显示约会的startDate。 这就是我试过的。但我真的不知道如何从上一次操作中获取对象。 第3行是现在发生故障的地方 <f:widget.paginate objects="{appointments}" as="paginatedAppointments"> <f:for each="{paginatedAppointments}" as="appoint

我想按
开始日期
(稍后按
律师全名
)对我的约会进行分组。
因此,我只想在前一次约会的
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>


{appointment.startDate->f:format.date(格式:'d.m.Y')}
{appointment.startTime->f:format.date(格式:'H:i')}
{约会.律师.全名}

{appointment.startTime->f:format.date(格式:'H:i')}
{预约.律师.全名}


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

--编辑--


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

您可以创建一个
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\')}')}">
...
{vendor:utility.compareLast(重置: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\')}')}">
...
{vendor:utility.compareLast(重置:1)}
...

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

不幸的是,它显然不适用于DateTimeObjects,在我的案例中不适用——但它适用于律师分组!也许它不是设计用来处理DateTimeObjects的。我们将查看核心代码,看看是什么阻止它工作。不幸的是,它显然不适合DateTimeObjects,在我的情况下不适合,但它适合律师分组!也许它不是设计用来处理DateTimeObjects的。我将查看核心代码,看看是什么阻止了它的工作。因为我以前从未创建过ViewHelper,所以现在学习这一点需要花费太多时间,但我稍后会查看它-谢谢!创建ViewHelper非常简单,不创建它是不值得的。好吧,我将尝试创建一个-感谢您的动机!)因为我以前从未创建过ViewHelper,所以现在学习这一点需要花费太多时间,但我会在以后再看它-谢谢!创建ViewHelper非常简单,不创建它是不值得的。好吧,我将尝试创建一个-感谢您的动机!)