slo_nik
@slo_nik

Виджет от kartik и кириллица?

Добрый вечер.
В форме использую виджет от kartik DateControll.
<?= $form->field($model, 'date')->widget(DateControl::className(),
                ['type' => DateControl::FORMAT_DATE, 'displayTimezone' => 'Europe/Kiev']
                                                            )
            ?>

Формат даты "8 Февраля 2018".
Поначалу всё работало как надо. Но после обновления yii2 до версии 2.0.13.1 виджет перестал работать с русским языком.
Ошибок в runtime/logs нет, в логах сервера тоже. При выборе даты ответ от сервера "200", вот только дата не конвертируется в timestamp.
h_1518978698_9178153_b033ca3835.png
Как видно на снимке параметр "output" не заполняется. Если же дата будет на английском("8 February 2018") - всё работает, "output" получает временную метку. Естественно, что валидация ругается.
С чем это связано никак не могу понять.
Настройки виджета
'datecontrol' =>  [
    'class' => '\kartik\datecontrol\Module',
    'displaySettings' => [
        Module::FORMAT_DATE => 'd MMMM yyyy',
        Module::FORMAT_TIME => 'HH:mm',
        Module::FORMAT_DATETIME => 'd MMMM yyyy HH:mm'
    ],
    'displayTimezone' => 'Europe/Kiev',
    'autoWidgetSettings' => [
        Module::FORMAT_DATETIME => ['pluginOptions' => [
            'autoclose' => true,
            'todayHighlight' => true,
            'startDate' => date('d m Y'),
        ],
            'readonly' => true],
        Module::FORMAT_DATE => ['pluginOptions' => [
            'autoclose' => true,
            'todayHighlight' => true,
        ],
            'readonly' => true],
        Module::FORMAT_TIME => ['readonly' => true]
    ],
    'saveSettings' => [
        Module::FORMAT_DATETIME => 'php:U',
        Module::FORMAT_DATE => 'php:U',
        Module::FORMAT_TIME => 'php:U',
    ],
    'ajaxConversion' => true,
]

Настройка Formatter
'formatter' => [
   'class' => 'yii\i18n\Formatter',
   'dateFormat' => 'dd MMMM yyyy',
   'defaultTimeZone' => 'Europe/Kiev',
   'datetimeFormat' => 'php: j F H:i:s',
   'locale' => 'ru'
]

Возможно, что это связано с этим обновлением?
Если нет, то как решить проблему?
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
slo_nik
@slo_nik Автор вопроса, куратор тега Yii
Проблема вроде решилась. Дело было не в настройках formatter, а именно в самом виджете от kartik.
На его демо-странице и на github для установки виджета указана команда
composer require kartik-v/yii2-datecontrol "@dev".
Устанавливалась версия "dev-master"
И, как я понял, после обновления до 2.0.13.1 и выше виджет отказывался работать с русским языком(и не только).
Решил проблему удалением datecontrol и новой установкой виджета.
composer require kartik-v/yii2-datecontrol
Сейчас версия "^1.9" и пока работает, в ответе от сервера приходит timestamp.
h_1519081714_6192203_5699e28a1c.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы