ssch / typo3-pagerfanta
将pagerfanta集成到TYPO3中
v1.0.0
2023-11-08 16:05 UTC
Requires
- pagerfanta/core: ^3.5
- typo3/cms-core: ^11.5 || ^12.4
- typo3/cms-extbase: ^11.5 || ^12.4
- typo3/cms-fluid: ^11.5 || ^12.4
- webmozart/assert: ^1.10
Requires (Dev)
- jangregor/phpstan-prophecy: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpspec/prophecy-phpunit: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpstan/phpstan-webmozart-assert: ^1.0
- rector/rector: ^0.18.2
- saschaegerer/phpstan-typo3: ^1.0
- symfony/serializer: ^4.4 || ^5.4 || ^6.0
- symplify/easy-coding-standard: ^11.0
- typo3/testing-framework: ^6.2
- dev-main
- v1.0.0
- v0.1.0
- v0.0.5
- v0.0.4
- v0.0.3
- 0.0.1
- dev-dependabot/composer/symplify/easy-coding-standard-tw-12.1
- dev-dependabot/composer/rector/rector-tw-0.19.5
- dev-dependabot/github_actions/peter-evans/create-pull-request-6.0.0
- dev-dependabot/github_actions/stefanzweifel/git-auto-commit-action-5.0.0
This package is auto-updated.
Last update: 2024-08-30 18:33:55 UTC
README
使用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创建)的启发。谢谢。