Skip to content

Commit 1d7387b

Browse files
committed
Fix deprecation notice when date argument is not nullable and null value is provided
1 parent 55ed2d4 commit 1d7387b

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/DateTimeValueResolver.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ public function resolve(Request $request, ArgumentMetadata $argument): iterable
6060
$format = $attribute->format;
6161
}
6262

63-
$date = false;
64-
6563
if (null !== $format) {
6664
$date = $class::createFromFormat($format, $value);
6765

@@ -73,7 +71,7 @@ public function resolve(Request $request, ArgumentMetadata $argument): iterable
7371
$value = '@'.$value;
7472
}
7573
try {
76-
$date = new $class($value);
74+
$date = new $class($value ?? 'now');
7775
} catch (\Exception) {
7876
$date = false;
7977
}

src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,26 @@ public function testNullableWithEmptyAttribute()
113113
$this->assertNull($results[0]);
114114
}
115115

116+
/**
117+
* @dataProvider getTimeZones
118+
*/
119+
public function testNow(string $timezone)
120+
{
121+
date_default_timezone_set($timezone);
122+
$resolver = new DateTimeValueResolver();
123+
124+
$argument = new ArgumentMetadata('dummy', \DateTime::class, false, false, null, false);
125+
$request = self::requestWithAttributes(['dummy' => null]);
126+
127+
/** @var \Generator $results */
128+
$results = $resolver->resolve($request, $argument);
129+
$results = iterator_to_array($results);
130+
131+
$this->assertCount(1, $results);
132+
$this->assertEquals('0', $results[0]->diff(new \DateTimeImmutable())->format('%s'));
133+
$this->assertSame($timezone, $results[0]->getTimezone()->getName(), 'Default timezone');
134+
}
135+
116136
public function testPreviouslyConvertedAttribute()
117137
{
118138
$resolver = new DateTimeValueResolver();

0 commit comments

Comments
 (0)