diff --git a/Form/Type/ModelType.php b/Form/Type/ModelType.php index 6b4db061a5..86b17ba62f 100644 --- a/Form/Type/ModelType.php +++ b/Form/Type/ModelType.php @@ -12,6 +12,7 @@ namespace Sonata\AdminBundle\Form\Type; +use Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface; use Symfony\Component\Form\FormBuilder; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\Form\AbstractType; @@ -52,15 +53,18 @@ public function getDefaultOptions() 'parent' => 'choice', 'preferred_choices' => array(), 'choice_list' => function (Options $options, $previousValue) { - if (null === $previousValue) { - return new ModelChoiceList( - $options['model_manager'], - $options['class'], - $options['property'], - $options['query'], - $options['choices'] - ); + if ($previousValue instanceof ChoiceListInterface + && count($choices = $previousValue->getChoices())) { + return $choices; } + + return new ModelChoiceList( + $options['model_manager'], + $options['class'], + $options['property'], + $options['query'], + $options['choices'] + ); } );