2013-03-13 2 views
3

내 응용 프로그램에서 오후 4시 30 분을 선택하여 12 시간 동안시와 분, 자오선을 출력해야합니다. 기본적으로 :CakePHP 2.2.3 분 간격과 기본 분 값을 사용할 때 FormHelper에서 기본 자오선을 설정할 수 없음

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

그러나 실제로 선택한 기본 시간은 오전 4시 30 분으로 표시됩니다.

약간의 실수를 한 후, 옵션에서 interval이 제거되면 오후 4시 30 분으로 올바르게 설정된다는 것을 발견했으며, 옵션에서 min을 제거하면 정확하게 기본값은 오후 4 시가됩니다.

나는 (CakePHP의 버전 2.2.3에서) FormHelper.php 파고 라인 2246에서 시작 FormHelper :: dateTime에()이 발견 :

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가있는 경우 이 경우 $min$interval과 충돌하지 않지만 $meridianthe assumption으로 덮어 쓰며, $hour은 24 시간 형식입니다. 이 경우 $hour이 12보다 작 으면 $meridian이 'am'이되어 16시 30 분의 기본 선택을 불가능하게 만듭니다.

도우미를 잘못 사용하고 있습니까, 아니면 핵심 오류입니까?

+0

FormHelper의 인용 부호가있는 코드 블록이 최신 안정 릴리스 (2.3.1)에 있음을 확인했습니다. –

+0

유효한 문제인 경우 티켓을 제출하십시오. 그것을 고치는 패치. 이것은 github pull 요청을 통해 수행 할 수 있습니다. – mark

+0

https://github.com/cakephp/cakephp/commit/f1d192f282486273d68c7334a18ebbd6f724cfce로 해결 되었습니까? – mark

답변

1

이 버그는 this merge에서 수정되었습니다.