Alphapager advanced

Total 28 items.
#Last NameFirst NameBornDied
1FaithfullMarianne1946/12/292025/01/30
2FalkPeter1927/09/162011/06/23
3FaraldoClaude1936/03/232008/01/29
4FarrellColin1976/05/31
5FassbinderRainer Werner1946/05/301982/06/10
6FeldmanMarty1933/07/081982/12/02
7FelliniFederico1920/01/201993/10/31
8FenderLeo1909/08/101991/03/21
9FerréolAndréa1947/01/06
10FerreriMarco1928/05/101997/05/09
11FerryBryan1945/09/26
12FieldsW.C.1880/01/291946/12/25
13FignonLaurent1960/08/122010/08/31
14FimmelTravis1979/07/15
15FincherDavid1962/05/10
16FinneyAlbert1936/05/082019/02/07
17FlemingIan1908/05/281964/08/12
18FoDario1926/03/242016/10/13
19FogertyJohn1945/05/28
20FokkerAnthony1890/04/061939/12/23
21FranklinAretha1942/03/252018/08/16
22FranssensJean-Paul1938/02/052003/06/19
23FranzenJonathan1959/08/17
24FreudLucien1922/12/082011/07/21
25FreudSigmund1856/05/061939/09/23
26FrostDavid1937/04/062013/08/31
27FryStephen1957/08/24
28FullerRichard Buckminster1895/07/121983/07/01

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.