Приветствую всех.
Столкнулся со следующей проблемой.
У меня в CGridView один из фильтров это поле с CJuiDatePicker.
Всё работает нормально только до AjaxUpdate. После него CJuiDatePicker отображает символьный код заместо русских обозначений дней и месяцев.
Прилагаю скрины для понимания проблемы.
До AjaxUpdate
После ajaxUpdate
кодировка CJuiDatePicker в CGridView после AjaxUpdate
Re: кодировка CJuiDatePicker в CGridView после AjaxUpdate
Да с этими DatePicker постоянные проблемы со слётом языка.
Я использовал ru прямо в конечных официальных файлах, поменяв их там, и они всегда по умолчанию подключаются только с русским, никаких других языков даже не пытается искать. Раз и навсегда искоренил эту проблему.
Я использовал ru прямо в конечных официальных файлах, поменяв их там, и они всегда по умолчанию подключаются только с русским, никаких других языков даже не пытается искать. Раз и навсегда искоренил эту проблему.
Re: кодировка CJuiDatePicker в CGridView после AjaxUpdate
Это не символьный код, это "слетает" интернационализация в js и берется "дефолтовый" язык, состоящий из иероглифов.
Как вариант: в CGridView в свойство afterAjaxUpdate прописать js код либо переинициализации поля, либо применения нужного языка. Код, к сожалению не подскажу, чего-то не могу найти где делал такое.
Как вариант: в CGridView в свойство afterAjaxUpdate прописать js код либо переинициализации поля, либо применения нужного языка. Код, к сожалению не подскажу, чего-то не могу найти где делал такое.
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Re: кодировка CJuiDatePicker в CGridView после AjaxUpdate
А можно ли уточнить, что и где?yiijeka писал(а):Я использовал ru прямо в конечных официальных файлах, поменяв их там, и они всегда по умолчанию подключаются только с русским, никаких других языков даже не пытается искать. Раз и навсегда искоренил эту проблему.
Не могу победить иероглифы. После того, как дата выбрана из календаря на русском, он японизируется и остается таким до рефреша страницы.
Это более чем странно, так как в datepicker'е по умолчанию стоит английский язык.
Пробовал в функцию AfterAjaxUpdate ставить regional["ru"],
в файле jquery.ui.min.js в функции datepicker менял regional на ["ru"] и в ините и в "defaults",
в CDatePicker.php ставил $language="ru",
ничего не помогло.
Изменение файлов фрейма не критично, так как они падают в репозиторий вместе с проектом и product-версия будет браться оттуда же.
Re: кодировка CJuiDatePicker в CGridView после AjaxUpdate
Изменение файлов фреймворка всегда критично, для этого существует наследование и переопределение...
С тех пор столько времени прошло, я уже и не сталкиваюсь с этой проблемой, в новых версиях, язык сам определяется из конфига приложения и подключает нужный язык.
На той старой версии уже не помню как и что там менял, вот такой код нашёл в архивах своих jquery.ui.datepicker-ru.js:
Этот файл лежит в \themes\default\js\jquery.ui.datepicker-ru.js
в форме использовал код:
ещё в фильтрах нашёл:
и кажется пользовался тогда http://www.yiiframework.com/wiki/318/us ... ew-filter/, повторюсь сейчас уже всё работает из коробки.
С тех пор столько времени прошло, я уже и не сталкиваюсь с этой проблемой, в новых версиях, язык сам определяется из конфига приложения и подключает нужный язык.
На той старой версии уже не помню как и что там менял, вот такой код нашёл в архивах своих jquery.ui.datepicker-ru.js:
Код: Выделить всё
/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
/* Written by Andrew Stromnov ([email protected]). */
jQuery(function($){
$.datepicker.regional['ru'] = {
closeText: 'Закрыть',
prevText: '<Пред',
nextText: 'След>',
currentText: 'Сегодня',
monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
'Июл','Авг','Сен','Окт','Ноя','Дек'],
dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
weekHeader: 'Нед',
dateFormat: 'yy-mm-dd',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['ru']);
});
в форме использовал код:
Код: Выделить всё
$this->widget(
'zii.widgets.jui.CJuiDatePicker',
array(
'model' => $request,
'attribute' => 'date_send_energoSbit',
'i18nScriptFile' => 'jquery.ui.datepicker-ru.js',
)
);
Код: Выделить всё
<?php
$clientScript = Yii::app()->clientScript;
$clientScript->registerScriptFile(Yii::app()->theme->baseUrl . '/js/jquery.ui.datepicker-ru.js');
?>
Код: Выделить всё
'afterAjaxUpdate' => 'reinstallDatePicker',
Код: Выделить всё
'filter' => $this->widget(
'zii.widgets.jui.CJuiDatePicker',
array(
'model' => $model,
'attribute' => 'login_time',
'language' => 'ru',
'i18nScriptFile' => 'jquery.ui.datepicker-ru.js',
'htmlOptions' => array(
'id' => 'datepicker_for_login_time',
'size' => '10',
),
'defaultOptions' => array( // (#3)
'showOn' => 'focus',
'dateFormat' => 'yy/mm/dd',
'showOtherMonths' => true,
'selectOtherMonths' => true,
'changeMonth' => true,
'changeYear' => true,
'showButtonPanel' => true,
)
),
true
),
Код: Выделить всё
Yii::app()->clientScript->registerScript(
're-install-date-picker',
"
function reinstallDatePicker(id, data) {
$('#datepicker_for_login_time').datepicker();
$('#datepicker_for_create_time').datepicker();
$.datepicker.setDefaults($.datepicker.regional['ru']);
}
"
);