在我自己的扩展程序中,我想限制显示的项目。从我的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但不适合我的问题。
答案 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转换为数组,并对其进行分页。