Виджет Альфа-индекса

Выкладываем свои наработки
Ответить
nnn
Сообщения: 4
Зарегистрирован: 2009.07.23, 15:40

Виджет Альфа-индекса

Сообщение nnn »

Всем привет, понадобилось мне сделать альфа индекс.
Решил с Вами поделиться, может кому и пригодится.
1. Альфа-индекс это набор букв ( в моем случае русского алфавита ), кстати, это легко расширить до любого другого алфавита. Нажатие на букву приводит к отображению, к примеру, всех фамилий начинающихся на выбранную букву. Альфа индекс это много юзабельней, в определнных местах конечно, чем часто используемый пагинатор. Мне это понадобилось в таблице "фамилий". Причина, по которой альфа-индекс юзабельней, чем пагинатор, крайне проста и в этом его прелесть... когда мы щелкаем по циферкам пагинатора, что бы "домотать" до нужного, во-первых, мы не знаем, когда это нужное наступит, во-вторых, мы на самом деле не знаем что там за циферкой два скрывается.. конечно, в определнных "местах" пагинатор более необходимое решение. Но в моем случае альфа индекс куда гораздо удобнее.
К примеру, когда Вы хотите найти всех ивановых достаточно нажать на букву И и вуаля ... :D .. это так был оффтоп

2. инсталировать просто - нужно скопировать файл виджета в папку components вашего приложения и в той же папке создать, если ее нету, папку view туда положить вид (alpha.php).
Использование - в желаемом виде написать следующее

Код: Выделить всё

$this->widget('AlphaIndex', array('modelName'=>'tblName', 'columnName'=>'fieldName')); 
параметры, я полагаю, ясны без перевода.
Конечно, саму выборку виджет не делает, придется дописать в контроллере пару строчек - критерии для отбора.

Вот наверно и все.
--
Фреймворк пока для меня крайне удачный, буду теперь на нем писать :-)
Вложения
Alpha.zip
(2.17 КБ) 492 скачивания
Аватара пользователя
radamir
Сообщения: 142
Зарегистрирован: 2009.08.10, 08:02
Откуда: Новосибирск

Re: Виджет Альфа-индекса

Сообщение radamir »

Посмотрел код и увидел в AlphaIndex::init лишние с моей точки зрения действия:
1) Вычисление пути к файлу модели
2) Проверка существования файла модели
3) Загрузка модели
Потому как ниже по коду ничего из этого не используется, создается впечатление, что класс не дописан.

И еще одно, имя модели может не совпадать с именем таблицы, не зря же в модели есть CActiveRecord::tableName, поэтому логичнее было бы ввести св-во $tableName вместо $modelName.
Allekss
Сообщения: 3
Зарегистрирован: 2009.09.24, 15:36

Re: Виджет Альфа-индекса

Сообщение Allekss »

Ееее... Ведь всегда так!! поманили а где архивчик с виджетом ?
Allekss
Сообщения: 3
Зарегистрирован: 2009.09.24, 15:36

Re: Виджет Альфа-индекса

Сообщение Allekss »

Упс. Архив есть Извиняюсь . В мозиле стандартная закачка тупая ,скачал стороним насосом
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Виджет Альфа-индекса

Сообщение Ekstazi »

Класс неплохой, однако
1) bindColumn здесь лишний
и все что до этого перечислили.
Allekss
Сообщения: 3
Зарегистрирован: 2009.09.24, 15:36

Re: Виджет Альфа-индекса

Сообщение Allekss »

Пришлось изменить SQL запрос , ошибка синтаксиса (db postgresql 8.4)

$sql = "SELECT UPPER(SUBSTRING(".$this->columnName.", 1,1)) as alpha, "
." count(".$this->columnName.") as q "
." FROM ".$this->modelName." "
." GROUP BY alpha "
." ORDER BY alpha";
Ответить