TYPO3(6.2)和extbase:向QueryResult添加项目

时间:2016-03-30 08:20:23

标签: php typo3 extbase typo3-6.2.x

我有一个事件列表,我需要的是显示第1页上某个类别的前5个事件,然后在下一页显示所有事件(包括X类的前5个)。

所以我尝试做的是为我的结果创建2个extbase查询,并尝试合并那些2.但是使用toArray或ObjectStorage,我的分页模板中出现以下错误:

  

传递给TYPO3 \ CMS \ Fluid \ ViewHelpers \ Widget \ PaginateViewHelper :: render()的参数1必须实现接口TYPO3 \ CMS \ Extbase \ Persistence \ QueryResultInterface,TYPO3 \ CMS \ Extbase \ Persistence \ ObjectStorage实例

那么如何合并2个QueryResults而不将它们转换为其他内容呢?或者还有另一种方法来实现我需要实现的目标吗?

我需要这个的一个小例子:

page 1 (the first 5 Events in Category X): 
    Event 4, Category X
    Event 5, Category X
    Event 8, Category X 
    Event 9, Category X
    Event 10, Category X 
page 2 (from now on everything is sorted by ID): 
    Event 1, Category A
    Event 2, Category B
    Event 3, Category B
    Event 4, Category X
    Evnet 5, Category X
page 3: 
    Event 6, Category A
    Event 7, Category B
    Event 8, Category X
    Event 9, Category X
    Event 10, Category X

在我的模板中使用f:widget.paginate。

1 个答案:

答案 0 :(得分:1)

首先,当从第1页移到第2页时,分页的概念并不真正适用于此。用户会期待什么?当然不是经常性的结果?

更重要的是:除了TYPO3 7.6之外,PaginationViewHelper还支持除QueryResults之外的数组。但是有一个漂移的后端(我用它6.2)。

要解决您的问题,为什么不对单独的页面使用单独的查询,因为您的内容元素似乎具有语义上不同的目的?当使用自定义WidgetController时,您可以在任意条件下调整QueryResult以达到您的目的,例如某个页面(这是它的设计目的),如果您真的必须这样做,但我会建议不要这样做。