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';
}
}