Merge pull request #1126 from kopaygorodsky/feature/form-collection-type

Feature/form collection type
This commit is contained in:
Guilhem Niot 2017-11-11 12:53:22 +01:00 committed by GitHub
commit 2b15539cc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 2 deletions

View File

@ -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) {

View File

@ -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)

View File

@ -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([