Используем CJuiDatePicker для фильтра CGridView в Yii

CJuiDatePicker (виджет jQuery UI DatePicker для Yii) очень просто использовать в виджете CGridView для фильтра записей по дате.

Ниже приведу небольшой пример, достаточный для внедрения в Ваше приложение.

Пример


 

Заметки

  • Определяем callback ‘afterAjaxUpdate’ для вызова функции инициализации datepicker. Это нужно определить, т.к. он возвращает plain text в поле фильтра каждый раз после ajax запроса в СGridView. См. (#1) и (#5)
  • В параметр ‘i18nScriptFile’ прописываем jquery-ui-i18n.min.js (файл интернационализации для виджета). Соответственно устанавливаем язык ‘ru’ (Смотри #2)
  • Нужно использовать ‘defaultOptions’ вместо ‘options’. Так как в пункте 1 и 5 каждый раз заново инициализируем datepicker достаточно один раз прописать настройки виджета по умолчанию. (#3)
  • Вызываем CController::widget() с третьим параметром ‘true’ для перехвата возвращаемого значения. См. офиц. API. (#4)

На этом всё. Ваш кэп.

P. S. Больше информации об использовании jQuery UI Datepicker в вики yiiframework.

6 комментариев, подписаться на rss

Денис Ответить

Извините возможно за глупый вопрос, а как выставить некоторую дату по умолчанию?

Остап Ответить

Почему-то после перезагрузки не хочет скрипт заново вызывать. Один раз запускается, второй раз уже никак. Только после обновления страницы

Остап Ответить

без аякса работает, с аяксом -нет. Что нужно сделать чтобы работало с аяксом?

алексей Ответить

Проблемы с кодировкой после ‘afterAjaxUpdate’ => ‘reinstallDatePicker’,
кракозябры в datepicker, в htaccess стоит AddDefaultCharset utf-8, как задать кодировку для ajax-запроса?

Алексей Ответить

Yii::app()->clientScript->registerScript('re-install-date-picker', "
function reinstallDatePicker(id, data) {
$.datepicker.setDefaults( $.datepicker.regional[ 'ru' ] );
$( '#datepicker_for_valid_to').datepicker();}
");

Андрей Ответить

Не работает локализация почему-то

Оставьте комментарий

Антибот *