소스 검색

Added check for array fields to be integers in reverseTransform method. This prevents checkdate from getting strings as arguments and throwing incorrect ErrorException when submitting form with malformed (string) data in, for example, Date field. #2609

ondrowan 13 년 전
부모
커밋
8351a11286
1개의 변경된 파일4개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php

+ 4 - 0
src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToArrayTransformer.php

@@ -142,6 +142,10 @@ class DateTimeToArrayTransformer extends BaseDateTimeTransformer
             ));
         }
 
+        if (preg_match( '/^\d*$/', $value['month'] . $value['day'] . $value['year']) === 0) {
+            throw new TransformationFailedException('This is an invalid date');
+        }
+
         if (!empty($value['month']) && !empty($value['day']) && !empty($value['year']) && false === checkdate($value['month'], $value['day'], $value['year'])) {
             throw new TransformationFailedException('This is an invalid date');
         }