justinvoelker/yii2-separatedpager

A Yii2 LinkPager that displays the first and last pages inline with other pages.

Installs: 56 622

Dependents: 2

Suggesters: 0

Security: 0

Stars: 30

Watchers: 4

Forks: 16

Open Issues: 1

Type:yii2-extension

1.0.2 2015-05-30 05:27 UTC

This package is not auto-updated.

Last update: 2024-12-21 17:48:37 UTC


README

A Yii2 LinkPager that displays the first and last pages inline with other pages.

Rather than having dedicated "First" and "Last" buttons in your LinkPager, Separated Pager will show a standard set of page links but will also always include the first and last pages as the first and last page links. No more dedicated first/last buttons and no more guessing how many pages there are.

sample

Installation

Install the extension

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist justinvoelker/yii2-separatedpager "*"

or add

"justinvoelker/yii2-separatedpager": "*"

to the require section of your composer.json file.

Usage

Simply add the pager property to your GridView and reference this class

GridView::widget([
    'dataProvider' => $dataProvider,
    ...
    'pager' => [
        'class' => 'justinvoelker\separatedpager\LinkPager',
    ]
]);

Please note that specifying less than 7 pages won't produce useful results. Less than 7 pages of content is acceptable (will look like the standard LinkPager) but limiting the pager to something less than 7 pages will look and work poorly. Five pages and the pager is almost worthless. Less than 5 and it is worthless.

Available Options

In addition to all of the standard LinkPager properties, one new property has been added, separator, that specifies a string to be used to indicate that multiple pages are being omitted. The default separator is ....

Here is my preferred pager setup. A max of 7 pages, 'Previous' and 'Next' buttons spelled out that are hidden on extra-small screens.

    'pager' => [
        'class' => 'justinvoelker\separatedpager\CustomLinkPager',
        'maxButtonCount' => 7,
        'prevPageLabel' => 'Previous',
        'nextPageLabel' => 'Next',
        'prevPageCssClass' => 'prev hidden-xs',
        'nextPageCssClass' => 'next hidden-xs',
        'activePageAsLink' => false,
    ]

Keep in mind that setting css classes will overwrite the defaults rather than appending to them. If additional classes should be included (such as the 'hidden-xs' above) the original prev and next should be included as well (this is the same way the standard LinkPager functions).

Standard LinkPager functionality uses a link for the active page. By setting activePageAsLink to false the link can be replaced with a span that looks the same but cannot be clicked.