ipub/visual-paginator

该包已被废弃,不再维护。未建议替代包。

Nette 框架的视觉分页器

v2.0.1 2019-05-24 18:33 UTC

This package is auto-updated.

Last update: 2020-02-14 11:16:25 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;
	}
}