Alphapager advanced

Total 33 items.
#Last NameFirst NameBornDied
1PacinoAl1940/04/25
2PageBettie1923/04/222008/12/11
3PaikNam June1932/07/202006/01/29
4PalahniukChuck1962/02/21
5PalinMichael1943/05/05
6PalmaBrian De1940/09/11
7PalmerRobert1949/01/192003/09/26
8Panamarenko1940/12/052019/12/14
9ParkerTrey1969/10/19
10PasoliniPier Paolo1922/03/051973/04/08
11PaulAaron1979/08/27
12PaulLes1915/06/092009/08/13
13PaxmanJeremy1950/05/11
14PennebakerD.A.1925/07/152019/08/01
15PetersonOscar1925/08/152007/12/23
16PettyTom1950/10/202017/10/02
17PicassoPablo1881/10/251973/04/08
18PiccoliMichel1925/12/272020/05/12
19PinterHarold1930/10/102008/12/24
20PlanckMax1858/04/231947/10/03
21PoeEdgar Allan1809/01/191849/10/07
22PoitierSidney1927/02/202022/01/06
23PolanskiRoman1933/08/18
24PollockJackson1912/01/281956/08/11
25PolsterBurkard1965/02/26
26PontiacPeter1951/04/282015/01/20
27PopIggy1947/04/21
28PotterDennis1935/05/171994/06/07
29PresleyElvis1935/01/081977/08/16
30PresleyReg1941/06/122013/02/04
31Prince1958/06/072016/04/21
32ProustMarcel1871/07/101922/11/18
33QueneauRaymond1903/02/211976/10/25

Yii2 Alphapager lets you do alphabetic paging in the Yii framework 2.0. On this page it is shown with some special settings.

The relevant code involved is something like this:

<?php

use sjaakp\alphapager\ActiveDataProvider;
use sjaakp\alphapager\AlphaPager;

$query = Person::find()->orderBy('last_name, first_name');

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'alphaAttribute' => 'last_name',
    'alphaDigits' => 'compact',                // one button for digits '0' - '9'
    'alphaPages' => [
        'P' => [
               'label' => 'pq',                // label button 'P' with 'pq'
               'pattern' => [ '[PpQq]' ],      // regular expression: include words starting with 'Q' under 'P'
           ],
        'Q' => false,                          // suppress page 'Q'
        'Z' => [
               'label' => 'x-z',               // label button 'Z' with 'x-z'
               'pattern' => [ '[X-Zx-z]' ],    // regular expression: include words starting with 'X' or 'Y' under 'Z'
           ],
        'X' => false,                          // suppress page 'X'
        'Y' => false,                          // suppress page 'Y'
    ],
    'pagination' => false                      // switch off normal pagination
]);
?>

<?= AlphaPager::widget([
    'dataProvider' => $dataProvider,
    'preButtons' => [],                       // no 'all' button
    'lowerCase' => true                       // buttons in lower case
]) ?>

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'last_name:ntext',
        'first_name:ntext',
        'born:date',
        'died:date',
    ],
]); ?>

A basic example is here.