CakePHP 2.6 DateTime ввод и пользовательский часовой пояс

Для веб-приложения, работающего в разных часовых поясах, существует ли способ для входов CakePHP 2.x dateTime отображать значения, показанные пользователю при редактировании, в их часовом поясе.

Например, Если у меня есть запись, которая хранится в базе данных, которая говорит appointment_date (который будет в часовом поясе UTC), если я, как пользователь в часовом поясе America/JamaicaЯ хотел бы отредактировать эту запись со входами, показывающими мне значения в моем часовом поясе, например, когда я делаю это:

<?php echo $this->Form->dateTime('appointment_date'); ?>

И, конечно, давайте предположим, что мы переведем обратно в часовой пояс UTC непосредственно перед сохранением.

0

Решение

Я создал суть здесь: https://gist.github.com/antoniovassell/fed29e782be33b7eb5ab
Что позволяет использовать абстрактный способ возможного обращения с преобразованием часового пояса ввода dateTime, используя специальный вспомогательный класс, расширяющий FormHelper.

public function dateTime($fieldName, $dateFormat = 'DMY', $timeFormat = '12', $attributes = array()) {
$attributes = parent::value($attributes, $fieldName);
if (!empty($attributes['value'])) {
$attributes['value'] = CakeTime::format('Y-m-d H:i:s', $attributes['value']);
}
return parent::dateTime($fieldName, $dateFormat, $timeFormat, $attributes);
}

Поэтому, кроме ручного преобразования значения формы в часовой пояс пользователя с помощью TimeHelper, а затем установки значения для ввода, мы могли бы автоматизировать это, переопределив функцию Form dateTime. И всякий раз, когда мы звоним echo $this->Form->dateTime('my_field'); это мы делаем это автоматически.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector