diff --git a/RouteDescriber/FosRestDescriber.php b/RouteDescriber/FosRestDescriber.php index 3af61d8..773a588 100644 --- a/RouteDescriber/FosRestDescriber.php +++ b/RouteDescriber/FosRestDescriber.php @@ -42,13 +42,21 @@ final class FosRestDescriber implements RouteDescriberInterface if ($annotation instanceof QueryParam) { $parameter = $operation->getParameters()->get($annotation->getName(), 'query'); $parameter->setAllowEmptyValue($annotation->nullable && $annotation->allowBlank); + + $parameter->setRequired(!$annotation->nullable && $annotation->strict); } else { $body = $operation->getParameters()->get('body', 'body')->getSchema(); $body->setType('object'); $parameter = $body->getProperties()->get($annotation->getName()); + + if (!$annotation->nullable && $annotation->strict) { + $requiredParameters = $body->getRequired(); + $requiredParameters[] = $annotation->getName(); + + $body->setRequired(array_values(array_unique($requiredParameters))); + } } - $parameter->setRequired(!$annotation->nullable && $annotation->strict); $parameter->setDefault($annotation->getDefault()); if (null === $parameter->getType()) { $parameter->setType($annotation->map ? 'array' : 'string'); diff --git a/Tests/Functional/Form/DummyType.php b/Tests/Functional/Form/DummyType.php index de658d6..0a8cc4a 100644 --- a/Tests/Functional/Form/DummyType.php +++ b/Tests/Functional/Form/DummyType.php @@ -32,7 +32,7 @@ class DummyType extends AbstractType $builder->add('password', RepeatedType::class, [ 'type' => PasswordType::class, 'first_name' => 'first_field', - 'required' => true + 'required' => true, ]); } }