Fixing FormModelDescriber entity form type description regression

This commit is contained in:
Marek Štípek 2018-05-11 00:21:26 +02:00
parent 4f42b5611f
commit 22ec4fb83b
4 changed files with 46 additions and 2 deletions

View File

@ -225,7 +225,15 @@ final class FormModelDescriber implements ModelDescriberInterface, ModelRegistry
do { do {
$class = get_class($type->getInnerType()); $class = get_class($type->getInnerType());
if (FormType::class !== $class && 0 === strpos($class, 'Symfony\Component\Form\Extension\Core\Type\\')) { if (FormType::class === $class) {
return null;
}
if ('entity' === $type->getBlockPrefix()) {
return $type;
}
if (0 === strpos($class, 'Symfony\Component\Form\Extension\Core\Type\\')) {
return $type; return $type;
} }
} while ($type = $type->getParent()); } while ($type = $type->getParent());

View File

@ -0,0 +1,31 @@
<?php
/*
* This file is part of the NelmioApiDocBundle package.
*
* (c) Nelmio
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Nelmio\ApiDocBundle\Tests\Functional\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class EntityType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefault('multiple', false)
->setRequired('class');
}
public function getParent(): string
{
return ChoiceType::class;
}
}

View File

@ -36,6 +36,7 @@ class UserType extends AbstractType
'required' => false, 'required' => false,
]) ])
->add('quz', DummyType::class, ['documentation' => ['type' => 'string', 'description' => 'User type.'], 'required' => false]) ->add('quz', DummyType::class, ['documentation' => ['type' => 'string', 'description' => 'User type.'], 'required' => false])
->add('entity', EntityType::class, ['class' => 'Entity'])
->add('extended_builtin', ExtendedBuiltinType::class, ['required_option' => 'foo']); ->add('extended_builtin', ExtendedBuiltinType::class, ['required_option' => 'foo']);
} }

View File

@ -243,12 +243,16 @@ class FunctionalTest extends WebTestCase
'type' => 'string', 'type' => 'string',
'description' => 'User type.', 'description' => 'User type.',
], ],
'entity' => [
'type' => 'string',
'format' => 'Entity id',
],
'extended_builtin' => [ 'extended_builtin' => [
'type' => 'string', 'type' => 'string',
'enum' => ['foo', 'bar'], 'enum' => ['foo', 'bar'],
], ],
], ],
'required' => ['dummy', 'dummies', 'extended_builtin'], 'required' => ['dummy', 'dummies', 'entity', 'extended_builtin'],
], $this->getModel('UserType')->toArray()); ], $this->getModel('UserType')->toArray());
$this->assertEquals([ $this->assertEquals([