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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

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

Сообщение 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'
]
Возможно, что это связано с этим обновлением?
Если нет, то как решить проблему?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku »

Попробуй вместо PHP-формата даты использовать более универсальный "ICU":
Доки Yii2 http://stuff.cebe.cc/yii2docs-ru/guide- ... e-and-time
ICU таблица http://userguide.icu-project.org/format ... mbol-Table
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

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

Сообщение 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)
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku »

Ну, вам, значит, виднее ) Не хотите - как хотите. Потом отпишитесь здесь, если не сложно, когда найдёте источник проблемы.
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

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

Сообщение slo_nik »

Nex-Otaku писал(а): 2018.02.19, 11:02 Ну, вам, значит, виднее ) Не хотите - как хотите. Потом отпишитесь здесь, если не сложно, когда найдёте источник проблемы.
Я уже пробовал в настройках самого виджета и в настройках formatter менять, результата это не принесло.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku »

Ну в таком случае - отладчик в руки и вперёд.
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

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

Сообщение 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.
Ответить