From fd00844dc64f69fcf22dfc22268fb5cbcc4f971d Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Sun, 27 May 2012 22:56:01 +0200 Subject: [PATCH] [Form] Update to sf2.1 --- ...n.php => DescriptionFormTypeExtension.php} | 13 ++++++------ Parser/FormTypeParser.php | 16 ++++++-------- Resources/config/services.xml | 6 +++--- Tests/Fixtures/Form/TestType.php | 21 ++++++++++++------- 4 files changed, 29 insertions(+), 27 deletions(-) rename Form/Extension/{DescriptionFieldTypeExtension.php => DescriptionFormTypeExtension.php} (74%) diff --git a/Form/Extension/DescriptionFieldTypeExtension.php b/Form/Extension/DescriptionFormTypeExtension.php similarity index 74% rename from Form/Extension/DescriptionFieldTypeExtension.php rename to Form/Extension/DescriptionFormTypeExtension.php index fb8ed01..437f39e 100644 --- a/Form/Extension/DescriptionFieldTypeExtension.php +++ b/Form/Extension/DescriptionFormTypeExtension.php @@ -15,8 +15,9 @@ use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormViewInterface; +use Symfony\Component\OptionsResolver\OptionsResolverInterface; -class DescriptionFieldTypeExtension extends AbstractTypeExtension +class DescriptionFormTypeExtension extends AbstractTypeExtension { /** * {@inheritdoc} @@ -31,17 +32,17 @@ class DescriptionFieldTypeExtension extends AbstractTypeExtension */ public function buildView(FormViewInterface $view, FormInterface $form, array $options) { - $view->set('description', $form->getAttribute('description')); + $view->setVar('description', $options['description']); } /** * {@inheritdoc} */ - public function getDefaultOptions() + public function setDefaultOptions(OptionsResolverInterface $resolver) { - return array( + $resolver->setDefaults(array( 'description' => '', - ); + )); } /** @@ -49,6 +50,6 @@ class DescriptionFieldTypeExtension extends AbstractTypeExtension */ public function getExtendedType() { - return 'field'; + return 'form'; } } diff --git a/Parser/FormTypeParser.php b/Parser/FormTypeParser.php index e044d5b..c59c3d0 100644 --- a/Parser/FormTypeParser.php +++ b/Parser/FormTypeParser.php @@ -52,18 +52,14 @@ class FormTypeParser */ public function parse(AbstractType $type) { - $builder = $this->formFactory->createBuilder($type); + $form = $this->formFactory->create($type); $parameters = array(); - foreach ($builder->all() as $name => $child) { - if ($child instanceof FormBuilder) { - $childBuilder = $child; - } else { - $childBuilder = $builder->create($name, $child['type'] ?: 'text', $child['options']); - } + foreach ($form as $name => $child) { + $config = $child->getConfig(); $bestType = ''; - foreach ($childBuilder->getTypes() as $type) { + foreach ($config->getTypes() as $type) { if (isset($this->mapTypes[$type->getName()])) { $bestType = $this->mapTypes[$type->getName()]; } @@ -71,8 +67,8 @@ class FormTypeParser $parameters[$name] = array( 'dataType' => $bestType, - 'required' => $childBuilder->getRequired(), - 'description' => $childBuilder->getAttribute('description'), + 'required' => $config->getRequired(), + 'description' => $config->getAttribute('description'), ); } diff --git a/Resources/config/services.xml b/Resources/config/services.xml index 2d3891f..13890bc 100644 --- a/Resources/config/services.xml +++ b/Resources/config/services.xml @@ -5,7 +5,7 @@ Nelmio\ApiDocBundle\Extractor\ApiDocExtractor - Nelmio\ApiDocBundle\Form\Extension\DescriptionFieldTypeExtension + Nelmio\ApiDocBundle\Form\Extension\DescriptionFormTypeExtension @@ -14,8 +14,8 @@ - - + + diff --git a/Tests/Fixtures/Form/TestType.php b/Tests/Fixtures/Form/TestType.php index 03fd4fe..cf04faf 100644 --- a/Tests/Fixtures/Form/TestType.php +++ b/Tests/Fixtures/Form/TestType.php @@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\Tests\Fixtures\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\OptionsResolver\OptionsResolverInterface; class TestType extends AbstractType { @@ -21,23 +22,27 @@ class TestType extends AbstractType */ public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->add('a', null, array('description' => 'A nice description')); - $builder->add('b'); - $builder->add($builder->create('c', 'checkbox')); + $builder + ->add('a', null, array('description' => 'A nice description')) + ->add('b') + ->add($builder->create('c', 'checkbox')) + ; } /** * {@inheritdoc} */ - public function getDefaultOptions() + public function setDefaultOptions(OptionsResolverInterface $resolver) { - return array( - 'data_class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\Test', - ); + $resolver->setDefaults(array( + 'data_class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\Test', + )); + + return; } public function getName() { - return ''; + return 'test_type'; } }