jakubstach/visual-paginator

适用于 Nette 框架的视觉分页器

dev-master 2022-10-21 13:54 UTC

This package is not auto-updated.

Last update: 2024-09-21 21:04:24 UTC


README

Build Status Scrutinizer Code Quality Latest Stable Version Composer Downloads

适用于 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;
	}
}