【问题标题】:TYPO3 (6.2) and extbase: add items to QueryResultTYPO3 (6.2) 和 extbase:向 QueryResult 添加项目
【发布时间】:2016-03-30 08:20:23
【问题描述】:

我有一个事件列表,我需要在第 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。

【问题讨论】:

    标签: php typo3 extbase typo3-6.2.x


    【解决方案1】:

    首先,当从第 1 页移动到第 2 页时,分页的概念在这里并不适用。用户期望什么?确定不会重复出现结果?

    更重要的是:除了 QueryResults 之外,仅从 TYPO3 7.6 开始,PaginationViewHelper 才支持数组。但是有一个反向端口(我在 6.2 中使用过)。

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

    【讨论】:

    • 不幸的是,这正是客户想要的,我无法改变它。
    • 见这里:\TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\PaginateController。您可以扩展它并用客户想要的任何内容覆盖indexAction 逻辑。话虽如此,我相信没有客户想要一个令人困惑的用户体验?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2014-09-07
    • 2017-03-25
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多