solarismedia / 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; } }