Страница 1 из 1

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

Добавлено: 2018.02.18, 21:45
slo_nik
Добрый вечер.
В форме использую виджет от 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.
Изображение
Как видно на снимке(кликабельно) параметр "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'
]
Возможно, что это связано с этим обновлением?
Если нет, то как решить проблему?

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.18, 23:37
Nex-Otaku
Попробуй вместо PHP-формата даты использовать более универсальный "ICU":
Доки Yii2 http://stuff.cebe.cc/yii2docs-ru/guide- ... e-and-time
ICU таблица http://userguide.icu-project.org/format ... mbol-Table

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.18, 23:53
slo_nik
Nex-Otaku писал(а): 2018.02.18, 23:37 Попробуй вместо PHP-формата даты использовать более универсальный "ICU":
Доки Yii2 http://stuff.cebe.cc/yii2docs-ru/guide- ... e-and-time
ICU таблица http://userguide.icu-project.org/format ... mbol-Table
Это не имеет никакого отношения к работе формы с виджетом. Ведь при таких настройках как у меня и при использовании английского всё работает. Работает и на предыдущей версии yii2(2.0.12)

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.19, 11:02
Nex-Otaku
Ну, вам, значит, виднее ) Не хотите - как хотите. Потом отпишитесь здесь, если не сложно, когда найдёте источник проблемы.

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.19, 12:04
slo_nik
Nex-Otaku писал(а): 2018.02.19, 11:02 Ну, вам, значит, виднее ) Не хотите - как хотите. Потом отпишитесь здесь, если не сложно, когда найдёте источник проблемы.
Я уже пробовал в настройках самого виджета и в настройках formatter менять, результата это не принесло.

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.19, 18:25
Nex-Otaku
Ну в таком случае - отладчик в руки и вперёд.

Re: Виджет от kartik и кириллица.

Добавлено: 2018.02.20, 02:03
slo_nik
Nex-Otaku писал(а): 2018.02.19, 11:02 Ну, вам, значит, виднее ) Не хотите - как хотите. Потом отпишитесь здесь, если не сложно, когда найдёте источник проблемы.
Проблема вроде решилась. Дело было не в настройках 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.