<f:widget.paginate> 显示控制器提供的更多项目
<f:widget.paginate> show more items then given from controller
在我自己的扩展中,我想限制显示的项目。从我的 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 和 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 但不适合我的问题。
您不需要限制存储库调用,只需让所有对象独立于分页,例如$this->eventRepository->findAll()
在分页视图助手中,您需要配置参数,视图助手会为您做限制:
<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
那是因为分页小部件覆盖了您通过 setLimit() 设置的限制。
如果您想对具有自定义 Limit 或 Offset 的结果集进行分页,则必须将 QueryResult 转换为数组,然后对其进行分页。
在我自己的扩展中,我想限制显示的项目。从我的 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 和 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 但不适合我的问题。
您不需要限制存储库调用,只需让所有对象独立于分页,例如$this->eventRepository->findAll()
在分页视图助手中,您需要配置参数,视图助手会为您做限制:
<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
那是因为分页小部件覆盖了您通过 setLimit() 设置的限制。
如果您想对具有自定义 Limit 或 Offset 的结果集进行分页,则必须将 QueryResult 转换为数组,然后对其进行分页。