我在这里创建了一个要点:https ://gist.github.com/antoniovasell/fed29e782be33b7eb5ab
它允许使用扩展 FormHelper 的自定义帮助程序类以抽象方式处理 dateTime 输入时区转换。
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');
它时,我们都会自动执行此操作。