3

<select>私のアプリケーションでは、デフォルトで午後4時30分が選択された状態で、12時間の時間、分、子午線を出力することが期待されています。

echo $this->Form->input('time_example', array(
    'interval' => 5,
    'timeFormat' => '12',
    'type' => 'time',
    'selected' => array(
        'hour' => '4',
        'min' => '30',
        'meridian' => 'pm'
    )
));

ただし、デフォルトで選択された時刻は、実際には午前4時30分として表示されます。

少しいじった後、オプションから削除された場合は正しくデフォルトで午後4時30分intervalになり、オプションから削除された場合は正しくデフォルトで午後4時になることがわかりましたmin

私はFormHelper.phpを掘り下げて、FormHelper :: dateTime()で、2246行目(CakePHPバージョン2.2.3)からこれを見つけました。

if (!empty($interval) && $interval > 1 && !empty($min)) {
    $current = new DateTime();
    if ($year !== null) {
        $current->setDate($year, $month, $day);
    }
    if ($hour !== null) {
        $current->setTime($hour, $min);
    }
    $change = (round($min * (1 / $interval)) * $interval) - $min;
    $current->modify($change > 0 ? "+$change minutes" : "$change minutes");
    $newTime = explode(' ', $current->format('Y m d H i a'));
    list($year, $month, $day, $hour, $min, $meridian) = $newTime;
}

これは、との両方が設定されている場合、$intervalとの競合を$min防ぐように見えますが、24時間形式の仮定で上書きされます。これにより、12未満の値では強制的に「am」になり、デフォルトの午後4時30分を選択できなくなります。$min$interval$meridian$hour$meridian$hour

ヘルパーを誤って使用していますか、それともコアのエラーですか?

4

1 に答える 1

1

このバグは、このマージで修正されました。

于 2013-03-19T15:55:07.477 に答える