Skip to content

Commit

Permalink
Merge pull request #15 from WouterJ/sf-28
Browse files Browse the repository at this point in the history
Add Symfony 3 support
  • Loading branch information
Burgov committed Oct 27, 2015
2 parents f522503 + 25bd195 commit 08fa9f6
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 7 deletions.
21 changes: 19 additions & 2 deletions Form/Type/KeyValueRowType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

namespace Burgov\Bundle\KeyValueFormBundle\Form\Type;


use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\ChoiceList\SimpleChoiceList;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class KeyValueRowType extends AbstractType
Expand All @@ -25,11 +25,21 @@ public function buildForm(FormBuilderInterface $builder, array $options)
}

public function getName()
{
return $this->getBlockPrefix();
}

public function getBlockPrefix()
{
return 'burgov_key_value_row';
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$this->configureOptions($resolver);
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'key_type' => 'text',
Expand All @@ -39,6 +49,13 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
));

$resolver->setRequired(array('value_type'));
$resolver->setAllowedTypes(array('allowed_keys' => array('null', 'array')));

if (method_exists($resolver, 'setDefined')) {
// Symfony 2.6+ API
$resolver->setAllowedTypes('allowed_keys', array('null', 'array'));
} else {
// Symfony <2.6 API
$resolver->setAllowedTypes(array('allowed_keys' => array('null', 'array')));
}
}
}
29 changes: 25 additions & 4 deletions Form/Type/KeyValueType.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class KeyValueType extends AbstractType
Expand Down Expand Up @@ -38,16 +39,24 @@ public function buildForm(FormBuilderInterface $builder, array $options)

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$this->configureOptions($resolver);
}

public function configureOptions(OptionsResolver $resolver)
{
// check if Form component version 2.8+ is used
$isSf28 = method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix');

$resolver->setDefaults(array(
'type' => 'burgov_key_value_row',
$isSf28 ? 'entry_type' : 'type' => 'burgov_key_value_row',
'allow_add' => true,
'allow_delete' => true,
'key_type' => 'text',
'key_options' => array(),
'value_options' => array(),
'allowed_keys' => null,
'use_container_object' => false,
'options' => function(Options $options) {
$isSf28 ? 'entry_options' : 'options' => function(Options $options) {
return array(
'key_type' => $options['key_type'],
'value_type' => $options['value_type'],
Expand All @@ -59,15 +68,27 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
));

$resolver->setRequired(array('value_type'));
$resolver->setAllowedTypes(array('allowed_keys' => array('null', 'array')));

if (method_exists($resolver, 'setDefined')) {
// Symfony 2.6+ API
$resolver->setAllowedTypes('allowed_keys' => array('null', 'array'));
} else {
// Symfony <2.6 API
$resolver->setAllowedTypes(array('allowed_keys' => array('null', 'array')));
}
}

public function getParent()
{
return 'collection';
return method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix') ? 'Symfony\Component\Form\Extension\Core\Type\CollectionType' : 'collection';
}

public function getName()
{
return $this->getBlockPrefix();
}

public function getBlockPrefix()
{
return 'burgov_key_value';
}
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"require": {
"php": ">=5.3.3",
"symfony/form": "~2.3"
"symfony/form": "~2.3|3.*"
},
"extra": {
"branch-alias": {
Expand Down

0 comments on commit 08fa9f6

Please sign in to comment.