diff --git a/RouteDescriber/FosRestDescriber.php b/RouteDescriber/FosRestDescriber.php index fd92f84..626f6a7 100644 --- a/RouteDescriber/FosRestDescriber.php +++ b/RouteDescriber/FosRestDescriber.php @@ -107,10 +107,12 @@ final class FosRestDescriber implements RouteDescriberInterface if ($requirements instanceof Constraint && !$requirements instanceof Regex) { if ($requirements instanceof DateTime) { // As defined per RFC3339 - if ('Y-m-d\TH:i:s' === $requirements->format || 'c' === $requirements->format) { + if (\DateTimeInterface::RFC3339 === $requirements->format || 'c' === $requirements->format) { return 'date-time'; } elseif ('Y-m-d' === $requirements->format) { return 'date'; + } else { + return null; } } diff --git a/Tests/Functional/Controller/FOSRestController.php b/Tests/Functional/Controller/FOSRestController.php index 2857f28..772af46 100644 --- a/Tests/Functional/Controller/FOSRestController.php +++ b/Tests/Functional/Controller/FOSRestController.php @@ -29,8 +29,9 @@ class FOSRestController * @QueryParam(name="mapped", map=true) * @RequestParam(name="Barraa", key="bar", requirements="\d+") * @RequestParam(name="baz", requirements=@IsTrue) - * @RequestParam(name="datetime", requirements=@DateTime("Y-m-d\TH:i:s")) + * @RequestParam(name="datetime", requirements=@DateTime("Y-m-d\TH:i:sP")) * @RequestParam(name="datetimeAlt", requirements=@DateTime("c")) + * @RequestParam(name="datetimeNoFormat", requirements=@DateTime()) * @RequestParam(name="date", requirements=@DateTime("Y-m-d")) */ public function fosrestAction() diff --git a/Tests/Functional/FOSRestTest.php b/Tests/Functional/FOSRestTest.php index 8024011..66917b8 100644 --- a/Tests/Functional/FOSRestTest.php +++ b/Tests/Functional/FOSRestTest.php @@ -56,6 +56,9 @@ class FOSRestTest extends WebTestCase $dateTimeAltProperty = $this->getProperty($bodySchema, 'datetimeAlt'); $this->assertEquals('date-time', $dateTimeAltProperty->format); + $dateTimeNoFormatProperty = $this->getProperty($bodySchema, 'datetimeNoFormat'); + $this->assertEquals(OA\UNDEFINED, $dateTimeNoFormatProperty->format); + $dateProperty = $this->getProperty($bodySchema, 'date'); $this->assertEquals('date', $dateProperty->format);