Yii: Расширение alphapager для вывода навигации по первым буквам (на примере для CGridView)
Используем расширение Alphapager — http://www.yiiframework.com/extension/alphapager/.
Скачиваем и разархивируем его в папку extensions.
Для русских букв изменим функцию в этом расширении (не сообразил как это внедрить, не меняя файлы расширения):
/** * @return Pager character set array. Default is A-Z. */ public function getCharSet() { if($this->_charSet===null) { $charSet1 = range('A','Z'); $charSet2 = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я'); $this->_charSet = array_merge($charSet1,$charSet2); } return $this->_charSet; }
В модели надо поправить метод search.
public function search()
{
Yii::import('application.extensions.alphapager.ApActiveDataProvider');
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('category_id',$this->category_id);
$criteria->compare('email',$this->email,true);
$criteria->compare('name',$this->name,true);
$criteria->compare('surname',$this->surname,true);
...
// This is just for disabling buttons which have no results
$acCriteria=new CDbCriteria;
$acCriteria->select='DISTINCT(SUBSTR(`name`,1,1)) AS `name`';
$chars = $this->findAll($acCriteria);
foreach($chars as $char)
$activeChars[]=mb_strtoupper($char->name); // поднимать регистр обязательно, иначе отобразит неактивной букву, на которую есть имена
return new ApActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'id DESC',
),
'pagination'=>array(
'pageSize'=>(int)Yii::app()->session['mailerbasePageCount'] ? Yii::app()->session['mailerbasePageCount'] : 10,
),
'alphapagination'=>array(
'attribute'=>'name',
'activeCharSet'=>$activeChars,
),
));
}
и потом в виде admin.php соответствующего контроллера вместо вызова CGridView теперь надо вызывать расширенный от него виджет ApGridView:
<?php /*$this->widget('zii.widgets.grid.CGridView', array(*/ $this->widget('application.extensions.alphapager.ApGridView', array( 'template'=>"{summary}\n{alphapager}\n{pager}\n{items}", 'alphaPager'=>array( 'showNumPage'=>'true', 'header'=>'Имена на букву: ' // <=====Setting different header text ), 'id'=>'mailerbase-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, ...
Выглядит так:
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 14 Разработка приложения на Yii. Урок 14: Выводим список категорий как новый виджет на сайте (29.04.2015)
- 13 Разработка приложения на Yii. Урок 13: Внедряем категории для статей. (29.04.2015)
- 12 Разработка приложения на Yii. Урок 12: Профилирование приложения, включаем кеширование. (20.01.2015)
- 11 Yiico. Видеокурс по разработке сайта на Yii. Урок 11: Отладка приложения, включаем журналирование. (20.01.2015)
- 10 Yiico. Видеокурс по разработке сайта на Yii. Урок 10: Если ваше приложение находится не в корневой папке, а во вложенной. (19.10.2014)
- 9 Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора. (13.08.2014)
- 8 Разработка сайта на Yii с нуля. Урок 8. Вызов в моделях функции, общей для них. Как избегать дублирования кода? (25.07.2014)
- 7 Разработка сайта на Yii с нуля. Урок 7. Изменение количества выводимых записей на странице в CGridView. Включаем сессии Yii. (04.09.2013)
- 6 Разработка сайта на Yii с нуля. Урок 6. Автоматич. отправка оповещений об одобренных комментариях на email автора комментария (11.08.2013)
- 5 Разработка сайта на Yii с нуля. Урок 5. Переименовываем blog в yiico. Изменяем "Home" в breadcrumbs. Включаем Gzip-сжатие. (09.08.2013)
- 4 Курс по Yii с нуля. Урок 4. Дорабатываем простую работу с пользователями: хранение пароля при редактировании пользователя. (13.04.2013)
- 3 Курс по Yii с нуля. Урок 3. Создаём новых пользователей. Организуем простую систему авторизации. Аутентификация, пароли, соли. (20.07.2014)
- 2 Yii + Git (github) на Mac. (24.03.2013)
- 2 Курс по Yii с нуля. Урок 2. Переносим и настраиваем Yii и проект нашего сайта на рабочем сервере. Избавляемся от index.php в url (09.07.2014)
- 1 Курс по Yii с нуля. Урок 1. Устанавливаем Yii на локальном компьютере. Заводим проект будущего сайта. (10.03.2013)
- 0 Composer – пакетный менеджер PHP. Что и как? (22.07.2014)
- 0 MySQL: проверить содержится ли значение в поле столбца (в столбце хранится строка значений через запятую) (22.05.2014)
- 0 Yii: Статичные страницы (создание, редактирование, удаление) (28.04.2014)
- 0 Yii: Расширение ECKEditor = Связка ckeditor + kcfinder (визуальный редактор с бесплатным файловым менеджером) (28.04.2014)
- 0 Yii: Bootstrap tabs, делаем активной вкладку на которую выполняется переход по ссылке (20.03.2014)
- 0 Yii: Доступ к атрибуту модели из файла шаблона (Вызов в шаблоне какого-либо атрибута модели). (17.02.2014)
- 0 Yii: Множественный автокомплит с помощью CJuiAutoComplete (автокомплит нескольких значений в одно поле) (07.02.2014)
- 0 Yii: Фотогалерея через поведение (доработка расширения imagesgallerymanager) (08.03.2016)
- 0 Yii: Установка и настройка Yii-app заготовки приложения от Crisu83 (09.03.2014)
- 0 Twitter Bootstrap Carousel Crossfade (09.09.2013)