Alphapager advanced

Total 40 items.
#Last NameFirst NameBornDied
1HackmanGene1930/01/30
2HagenNina1955/03/11
3HallMichael C.1971/02/01
4HaranBrady1976/06/18
5HardyFrançoise1944/01/172024/06/11
6HardyOliver1892/01/181957/08/07
7HaringKeith1958/05/041990/02/16
8HarrisonGeorge1943/02/242001/11/29
9HarveyPJ1969/10/09
10HauerRutger1944/01/232019/07/19
11HavelVáclav1936/10/052011/12/18
12HawkingStephen1942/01/082018/03/14
13HayesIsaac1942/08/202008/08/10
14HeinekenFreddy1923/11/042002/01/03
15HeisenbergWerner1901/12/051976/02/01
16HeldringJérôme1917/12/202013/04/27
17HelmLevon1940/05/262012/04/19
18HemingwayErnest1899/07/211961/07/02
19HendrixJimi1942/11/271970/09/18
20Hergé1907/05/221983/03/03
21HitchcockAlfred1899/08/131980/04/28
22HitchensChristopher1949/04/132011/12/15
23HockneyDavid1937/07/09
24HoffmanDustin1937/08/08
25HoffmanPhilip Seymour1967/07/232014/02/02
26HofstadterDouglas1945/02/15
27HollandJools1958/01/24
28HoltSimeon ten1923/01/242012/11/25
29HookerJohn Lee1917/08/212001/06/21
30HopkinsAnthony1937/12/31
31HopperDennis1936/05/172010/05/29
32HopperEdward1882/07/221967/05/15
33HoudiniHarry1874/03/241926/10/31
34HouellebecqMichel1958/02/26
35HuntHelen1963/06/15
36HuppertIsabelle1953/03/16
37HütterRalf1946/08/19
38HuxleyAldous1894/07/261963/11/22
39HuygensChristiaan1629/04/141695/07/08
40HyndeChrissie1951/09/07

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.