<f:widget.paginate>显示更多来自控制器

时间:2017-02-26 15:14:30

标签: typo3 extbase

在我自己的扩展程序中,我想限制显示的项目。从我的flexform我得到设定值= 5 的 EventController.php

$showMaxItems = (int)$this->settings['event']['maxItems'];

找到了maxItems:

$events = $this->eventRepository->findLimited($showMaxItems);

并分配给视图:

$this->view->assign('events', $events);

EventRepository.php

public function findLimited($limit) {
    $query = $this->createQuery();
    return $query->setLimit($limit)
        ->execute();
}

List.html显示maxItems

<f:for each="{events}" as="event">
</f:for>

List.html with widget.pagination始终显示10个项目

<f:widget.paginate objects="{events}" as="paginatedEvents">
    <f:for each="{paginatedEvents}" as="event">
    </f:for>
</f:widget.paginate>

当我在两个版本的EventController中显示调试数据时,我有5个项目

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($events);

这是我或extbase的错误吗?我发现https://forge.typo3.org/issues/79559但不适合我的问题。

2 个答案:

答案 0 :(得分:0)

您不需要限制存储库调用,只需使所有对象独立于分页,例如$this->eventRepository->findAll()

在paginate View Helper中,您需要配置参数,View Helper会为您设置限制:

<f:widget.paginate objects="{events}" as="paginatedEvents" configuration="{itemsPerPage: '{settings.event.maxItems}'}">
  <f:for each="{paginatedEvents}">
    ...
  </f:for>
</f:widget.paginate>

请参阅:https://fluidtypo3.org/viewhelpers/fluid/master/Widget/PaginateViewHelper.html

答案 1 :(得分:0)

这是因为Pagination Widget会覆盖您通过setLimit()设置的限制。

如果您希望对具有自定义限制或偏移的结果集进行分页,则必须将QueryResult转换为数组,并对其进行分页。