jakubstach / visual-paginator
适用于 Nette 框架的视觉分页器
dev-master
2022-10-21 13:54 UTC
Requires
- php: ^7.2 || ^8.0
- latte/latte: ^2.5
- nette/application: ^3.0
- nette/di: ^3.0
- nette/utils: ^3.0
Requires (Dev)
- janmarek/mockista: ^1.1
- nette/bootstrap: ^3.0
- nette/forms: ^3.0
- nette/tester: ^2.2
- tracy/tracy: ^2.6
This package is not auto-updated.
Last update: 2024-09-21 21:04:24 UTC
README
适用于 Nette 框架 的视觉分页器
安装
安装 ipub/visual-paginator 的最佳方式是使用 Composer
{ "require": { "ipub/visual-paginator": "dev-master" } }
或者
$ composer require ipub/visual-paginator:@dev
之后,您需要在 config.neon 中注册扩展。
extensions: visualPaginator: IPub\VisualPaginator\DI\VisualPaginatorExtension
使用方法
在 Presenter 或 Component 中实现
use IPub\VisualPaginator\Components as VisualPaginator; class SomePresenter extends Nette\Application\UI\Presenter { /** * @var Model */ private $dataModel; public function renderDefault() { $someItemsList = $this->dataModel->findAll(); // Get visual paginator components $visualPaginator = $this['visualPaginator']; // Get paginator form visual paginator $paginator = $visualPaginator->getPaginator(); // Define items count per one page $paginator->itemsPerPage = 10; // Define total items in list $paginator->itemCount = $someItemsList->count(); // Apply limits to list $someItemsList->limit($paginator->itemsPerPage, $paginator->offset); } /** * Create items paginator * * @return VisualPaginator\Control */ protected function createComponentVisualPaginator() { // Init visual paginator $control = new VisualPaginator\Control; return $control; } }
启用或禁用 Ajax 支持
此组件提供 Ajax 支持。当启用 Ajax 时,则会在链接中插入 ajax 类。
use IPub\VisualPaginator\Components as VisualPaginator; class SomePresenter extends Nette\Application\UI\Presenter { /** * Create items paginator * * @return VisualPaginator\Control */ protected function createComponentVisualPaginator() { // Init visual paginator $control = new VisualPaginator\Control; // Enable ajax (by default) $control->enableAjax(); // Or disable ajax $control->disableAjax(); return $control; } }
现在您需要定义事件,当通过 Ajax 请求加载下一页或上一页时将执行什么操作
use IPub\VisualPaginator\Components as VisualPaginator; class SomePresenter extends Nette\Application\UI\Presenter { public function renderDefault() { $that = $this; //.... // Define event for example to redraw snippets $this['visualPaginator']->onShowPage[] = (function ($component, $page) use ($that) { if ($that->isAjax()){ $that->invalidateControl(); } }); } }
使用模板
此组件附带两个默认模板。一个是基本默认模板,包含一些基本类,另一个是 Bootstrap FW 模板。您还可以使用自己的模板
use IPub\VisualPaginator\Components as VisualPaginator; class SomePresenter extends Nette\Application\UI\Presenter { /** * Create items paginator * * @return VisualPaginator\Control */ protected function createComponentVisualPaginator() { // Init visual paginator $control = new VisualPaginator\Control; // To use bootstrap default template $control->setTemplateFile('bootstrap.latte'); // To use your own template $control->setTemplateFile('path/to/your/latte/file.latte'); return $control; } }