Skip to content

Commit 9ab0b48

Browse files
author
karl.rixon
committed
Fix #27378: Error when rendering a DateIntervalType form with exactly 0 weeks
1 parent fc9f947 commit 9ab0b48

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public function transform($dateInterval)
8989
$result[$field] = $dateInterval->format('%'.($this->pad ? strtoupper($char) : $char));
9090
}
9191
if (in_array('weeks', $this->fields, true)) {
92-
$result['weeks'] = 0;
92+
$result['weeks'] = '0';
9393
if (isset($result['days']) && (int) $result['days'] >= 7) {
9494
$result['weeks'] = (string) floor($result['days'] / 7);
9595
$result['days'] = (string) ($result['days'] % 7);

src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateIntervalToArrayTransformerTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,21 @@ public function testTransformWithWeek()
9090
$this->assertSame($output, $input);
9191
}
9292

93+
public function testTransformWithZeroWeek()
94+
{
95+
$transformer = new DateIntervalToArrayTransformer(array('weeks', 'minutes', 'seconds'));
96+
$input = new \DateInterval('P1Y2M0WT4H5M6S');
97+
$output = array(
98+
'weeks' => '0',
99+
'minutes' => '5',
100+
'seconds' => '6',
101+
);
102+
$input = $transformer->transform($input);
103+
ksort($input);
104+
ksort($output);
105+
$this->assertSame($output, $input);
106+
}
107+
93108
public function testTransformDaysToWeeks()
94109
{
95110
$transformer = new DateIntervalToArrayTransformer(array('weeks', 'minutes', 'seconds'));

0 commit comments

Comments
 (0)