diff --git a/ModelDescriber/FormModelDescriber.php b/ModelDescriber/FormModelDescriber.php index 07f5bcc..4694352 100644 --- a/ModelDescriber/FormModelDescriber.php +++ b/ModelDescriber/FormModelDescriber.php @@ -100,6 +100,12 @@ final class FormModelDescriber implements ModelDescriberInterface, ModelRegistry } if ('collection' === $blockPrefix) { $subType = $config->getOption('entry_type'); + $property->setType('array'); + + $model = new Model(new Type(Type::BUILTIN_TYPE_OBJECT, false, $subType), null); + $property->getItems()->setRef($this->modelRegistry->register($model)); + $property->setExample(sprintf('[{%s}]', $subType)); + break; } if ('entity' === $blockPrefix) { diff --git a/Tests/Functional/Form/UserType.php b/Tests/Functional/Form/UserType.php index 8cf8742..8e7eb79 100644 --- a/Tests/Functional/Form/UserType.php +++ b/Tests/Functional/Form/UserType.php @@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\Tests\Functional\Form; use Nelmio\ApiDocBundle\Tests\Functional\Entity\User; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\CollectionType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -20,7 +21,11 @@ class UserType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->add('dummy', DummyType::class); + $builder + ->add('dummy', DummyType::class) + ->add('dummies', CollectionType::class, [ + 'entry_type' => DummyType::class + ]); } public function configureOptions(OptionsResolver $resolver) diff --git a/Tests/Functional/FunctionalTest.php b/Tests/Functional/FunctionalTest.php index f72b5fe..4bbd662 100644 --- a/Tests/Functional/FunctionalTest.php +++ b/Tests/Functional/FunctionalTest.php @@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\Tests\Functional; use EXSyst\Component\Swagger\Operation; use EXSyst\Component\Swagger\Tag; +use Nelmio\ApiDocBundle\Tests\Functional\Form\DummyType; class FunctionalTest extends WebTestCase { @@ -181,8 +182,13 @@ class FunctionalTest extends WebTestCase 'type' => 'object', 'properties' => [ 'dummy' => ['$ref' => '#/definitions/DummyType'], + 'dummies' => [ + 'items' => ['$ref' => '#/definitions/DummyType'], + 'type' => 'array', + 'example' => sprintf('[{%s}]', DummyType::class) + ] ], - 'required' => ['dummy'], + 'required' => ['dummy', 'dummies'], ], $this->getModel('UserType')->toArray()); $this->assertEquals([