Extender для db_select, который делает фильтрацию по первым буквам в строке

Главные вкладки

Аватар пользователя roman-yrv roman-yrv 8 октября 2014 в 13:54

Добрый день.

Скажите пожалуйста, существует ли extender для db_select, который работает как DefaultPager, только позволяет отображать не средства пагинации "<< < 1 2 3 > >>", а первые буквы в строке, которую выдает db_select ?
То есть, после подключения этого extender будет отображаться "А Б В Г" и т.д. Это удобно, когда нужно отображать имена собственные, такие как фамилии, названия городов, другие названия. То есть, когда намного удобнее нажать на нужную букву и увидеть названия, начинающиеся с этой буквы, а не пролистывать пагинатор.

Заранее благодарен за ответ.

Комментарии

Аватар пользователя roman-yrv roman-yrv 8 октября 2014 в 14:29

Ну это понятно, что всё это можно реализовать через LIKE и т.д.
Просто одно дело, когда каждый раз это руками нужно реализовывать.
А другое дело - когда к db_select дописал несколько строк строк кода.

Например, как-то так:

$query
  ->fields('n', array('nid', 'title')
  ->extend('PagerFirstLetter')   // Это вызов этого экстендера
  ->fieldLetter('title');        // Это строковое поле, по первой букве которого делать фильтрацию

Если не получится найти, надо будет попробовать реализовать самому. Посмотреть, как написан код PagerDefault и на его основе реализовать.

Аватар пользователя roman-yrv roman-yrv 10 ноября 2015 в 11:49

Удалось реализовать данный экстендер.

Правда, тянет разве что на альфа-версию, но худо-бедно работает.

За основу взял экстендер PagerDefault, использовал его принципы отображения, но написал свою логику.