* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sonata\AdminBundle\Form\Type; use Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolverInterface; /** * Class ModelReferenceType. * * @author Thomas Rabaix */ class ModelReferenceType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addModelTransformer(new ModelToIdTransformer($options['model_manager'], $options['class'])); } /** * NEXT_MAJOR: Remove method, when bumping requirements to SF 2.7+. * * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $this->configureOptions($resolver); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'compound' => false, 'model_manager' => null, 'class' => null, )); } /** * {@inheritdoc} */ public function getParent() { // NEXT_MAJOR: Remove ternary (when requirement of Symfony is >= 2.8) return method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix') ? 'Symfony\Component\Form\Extension\Core\Type\TextType' : 'text'; } /** * NEXT_MAJOR: Remove when dropping Symfony <2.8 support. * * {@inheritdoc} */ public function getName() { return $this->getBlockPrefix(); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'sonata_type_model_reference'; } }