Alphapager advanced

Total 52 items.
#Last NameFirst NameBornDied
1MuybridgeEadweard1830/04/091904/05/08
2MusilRobert1880/11/061942/04/15
3MurphyCillian1976/05/25
4MurakamiHaruki1949/01/12
5MozartWolfgang Amadeus1756/01/271791/12/05
6MorrisonJim1943/12/081971/07/03
7MorrisonVan1945/08/31
8MorriconeEnnio1928/11/102020/07/06
9MoraviaAlberto1907/11/281990/09/26
10MooreHenry1898/07/301981/08/31
11MoorePatrick1923/03/042012/12/09
12MooreRoger1927/10/142017/05/23
13MoonKeith1946/08/231978/09/07
14MoogRobert1934/05/232005/08/21
15MonroeMarilyn1926/06/011962/08/05
16MonkThelonious1917/10/101982/02/17
17MondriaanPiet1872/03/071944/02/01
18MitchellDavid1969/01/12
19MillerArthur1915/10/172005/02/10
20MillerHenry1891/12/261980/06/17
21MercuryFreddy1946/09/051991/11/24
22MenuhinYehudi1916/04/221999/03/12
23MendesSam1965/08/01
24MendelejevDmitri1834/02/081907/02/02
25MelvilleHerman1819/08/191891/09/28
26MeijerIscha1943/02/141995/02/14
27MeierDieter1945/03/04
28McLarenMalcolm1946/01/222010/04/08
29McEwanIan1948/06/21
30McCartneyPaul1942/06/18
31McCarthyCormac1933/07/202023/06/13
32MayallRik1958/03/072014/06/09
33MatisseHenri1869/12/311954/11/03
34Mata Hari1876/08/071917/10/15
35MastroianniMarcello1923/09/281996/12/19
36MarxGroucho1895/10/021977/08/18
37MartinDon1931/05/182000/01/06
38MartinGeorge1926/01/032016/03/08
39MárquezGabriel García1927/03/062014/04/17
40MarleyBob1945/02/061981/05/11
41ManzarekRay1939/02/122013/05/20
42MannThomas1875/06/061955/08/12
43MandelbrotBenoît1924/11/202010/10/14
44MandelaNelson1918/07/182013/12/05
45MalkovichJohn1953/12/09
46MalevitsjKazimir1878/02/231935/05/15
47MailerNorman1923/01/312007/11/10
48Madonna1959/08/16
49MacneePatrick1922/02/062015/06/25
50MacKayGeorge1992/03/13
51MacFarlaneSeth1973/10/26
52MaYo-Yo1955/10/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.