Typo3 <;f:widget.paginate>;显示控制器提供的更多项目
在我自己的扩展中,我想限制显示的项目。从flexform中,我得到的设定值为5 EventController.php:Typo3 <;f:widget.paginate>;显示控制器提供的更多项目,typo3,extbase,Typo3,Extbase,在我自己的扩展中,我想限制显示的项目。从flexform中,我得到的设定值为5 EventController.php: $showMaxItems = (int)$this->settings['event']['maxItems']; 并找到了maxItems: $events = $this->eventRepository->findLimited($showMaxItems); 并指定给视图: $this->view->assign('events',
$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>
<f:widget.paginate objects="{events}" as="paginatedEvents">
<f:for each="{paginatedEvents}" as="event">
</f:for>
</f:widget.paginate>
这是我的bug还是extbase的bug?我找到了,但不适合我的问题。您不需要限制存储库调用,只需让所有对象独立于分页,例如
$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>
...
请参阅:这是因为分页小部件覆盖了您通过setLimit()设置的限制
如果要对结果集使用自定义限制或偏移量进行分页,则必须将QueryResult转换为数组,并对其进行分页。我要限制plugin flexform中的maxItems,而不是itemsPerPage。示例:maxItems=5;itemsPerPage=10;不需要分页。示例2:maxItems=(未设置=全部);itemsPerPage=10;需要分页您能否提供一个如何在服务器端分页的示例?例如,如果代表有1000条记录。。。在前端,我想要100条记录,当第二个选项卡上的“分页”加载下100条记录时。。。等等
<f:widget.paginate objects="{events}" as="paginatedEvents" configuration="{itemsPerPage: '{settings.event.maxItems}'}">
<f:for each="{paginatedEvents}">
...
</f:for>
</f:widget.paginate>