Skip to content

Commit 8a1ac32

Browse files
committed
Handle previously converted DateTime arguments
1 parent 0710a61 commit 8a1ac32

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

Controller/ArgumentResolver/DateTimeValueResolver.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public function resolve(Request $request, ArgumentMetadata $argument): iterable
4040
{
4141
$value = $request->attributes->get($argument->getName());
4242

43+
if ($value instanceof \DateTimeInterface) {
44+
yield $value;
45+
46+
return;
47+
}
48+
4349
if ($argument->isNullable() && !$value) {
4450
yield null;
4551

Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php

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

116+
public function testPreviouslyConvertedAttribute()
117+
{
118+
$resolver = new DateTimeValueResolver();
119+
120+
$argument = new ArgumentMetadata('dummy', \DateTime::class, false, false, null, true);
121+
$request = self::requestWithAttributes(['dummy' => $datetime = new \DateTime()]);
122+
123+
/** @var \Generator $results */
124+
$results = $resolver->resolve($request, $argument);
125+
$results = iterator_to_array($results);
126+
127+
$this->assertCount(1, $results);
128+
$this->assertSame($datetime, $results[0]);
129+
}
130+
116131
public function testCustomClass()
117132
{
118133
date_default_timezone_set('UTC');

0 commit comments

Comments
 (0)