ipub / visual-paginator
该包已被废弃,不再维护。未建议替代包。
Nette 框架的视觉分页器
v2.0.1
2019-05-24 18:33 UTC
Requires
- php: ^7.2
- 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
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; } }