ssch / typo3-pagerfanta

将pagerfanta集成到TYPO3中

安装次数: 1,259

依赖关系: 0

建议者: 0

安全: 0

星标: 3

关注者: 4

分支: 1

开放问题: 4

语言:HTML

类型:typo3-cms-extension


README

Downloads

使用Pagerfanta库与TYPO3集成!

扩展,用于在TYPO3中使用Pagerfanta

安装与设置

要安装此包,请运行以下Composer命令

composer require ssch/typo3-pagerfanta

默认配置

plugin.tx_typo3pagerfanta {
    settings {
        # The default Pagerfanta view to use in your application
        default_view = fluid
        # The default fluid template to use when using the Twig Pagerfanta view (available: Foundation6, MaterializeCss, Tailwind, TwitterBootstrap, TwitterBootstrap3, TwitterBootstrap4, TwitterBootstrap5
        default_fluid_template = EXT:typo3_pagerfanta/Resources/Private/Templates/TwitterBootstrap5.html
    }
}

使用示例

假设你有一个经典的extbase插件,它有一个extbase仓库查询结果,你想对其进行分页,那么你可以使用以下示例作为起点。

use Psr\Http\Message\ResponseInterface;

final class TestController extends ActionController
{
    public function myCustomAction(int $currentPage = 1): ResponseInterface
    {
        $jobs = $this->jobRepository->findAll();

        $queryResultAdapter = new QueryResultAdapter($jobs);
        $pagination = Pagerfanta::createForCurrentPageWithMaxPerPage($queryResultAdapter, $currentPage, 1);

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

        return $this->htmlRepsonse();
    }
}

然后你在Fluid模板中调用PaginationViewHelper,传入Pagination实例。路由会自动生成,使用变量"currentPage"传播页码。默认情况下,该扩展使用FluidView和TwitterBootstrap5模板来渲染分页。

{namespace pagerfanta = Ssch\Typo3Pagerfanta\ViewHelpers}
<pagerfanta:pagination pagerfanta="{pagination}" />
<f:for each="{pagination}" as="job">
    <f:render partial="List" arguments="{job: job}"/>
</f:for>
<pagerfanta:pagination pagerfanta="{pagination}" />

如果你使用除currentPage之外的其他参数进行分页,你可以在渲染分页器时使用pageParameter选项来设置参数名称。

<pagerfanta:pagination pagerfanta="{pagination}" options="{pageParameter: 'page'}" />

如果你想使用不同的模板进行分页,你可以在渲染分页器时使用template选项来设置模板。

<pagerfanta:pagination pagerfanta="{pagination}" options="{template: 'EXT:typo3_pagerfanta/Resources/Private/Templates/Foundation6.html'}" />

为什么这个扩展很出色

在我看来,这个扩展,或者说Pagerfanta概念,将路由生成(RouteGenerator)与视图分离。因此,视图完全不知道如何自己生成页面链接,因此它是完全可重用的。在控制器内生成路由比在视图中生成页面链接提供了更多的灵活性。

进一步文档

请参阅BabDev网站以获取有关如何使用此扩展的详细信息。

致谢

这个包深受babdev/pagerfanta-bundle(由Michael Babker创建)的启发。谢谢。