|
@@ -0,0 +1,84 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/*
|
|
|
+ * This file is part of the Sonata package.
|
|
|
+ *
|
|
|
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
|
|
|
+ *
|
|
|
+ * 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 Symfony\Component\Form\FormBuilderInterface;
|
|
|
+use Symfony\Component\Form\AbstractType;
|
|
|
+use Symfony\Component\Form\FormInterface;
|
|
|
+use Symfony\Component\Form\FormViewInterface;
|
|
|
+use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
|
|
+
|
|
|
+use Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer;
|
|
|
+
|
|
|
+/**
|
|
|
+ * This type is used to render an hidden input text and 3 links
|
|
|
+ * - an add form modal
|
|
|
+ * - a list modal to select the targetted entities
|
|
|
+ * - a clear selection link
|
|
|
+ */
|
|
|
+class ModelTypeList extends AbstractType
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * {@inheritDoc}
|
|
|
+ */
|
|
|
+ public function buildForm(FormBuilderInterface $builder, array $options)
|
|
|
+ {
|
|
|
+ $builder
|
|
|
+ ->resetViewTransformers()
|
|
|
+ ->addViewTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function buildView(FormViewInterface $view, FormInterface $form, array $options)
|
|
|
+ {
|
|
|
+ if ($view->hasVar('sonata_admin')) {
|
|
|
+ $parameters = $view->getVar('sonata_admin');
|
|
|
+
|
|
|
+ // set the correct edit mode
|
|
|
+ $parameters['edit'] = 'list';
|
|
|
+
|
|
|
+ $view->setVar('sonata_admin', $parameters);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritDoc}
|
|
|
+ */
|
|
|
+ public function setDefaultOptions(OptionsResolverInterface $resolver)
|
|
|
+ {
|
|
|
+ $resolver->setDefaults(array(
|
|
|
+ 'model_manager' => null,
|
|
|
+ 'class' => null,
|
|
|
+ 'parent' => 'text',
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritDoc}
|
|
|
+ */
|
|
|
+ public function getParent()
|
|
|
+ {
|
|
|
+ return 'text';
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritDoc}
|
|
|
+ */
|
|
|
+ public function getName()
|
|
|
+ {
|
|
|
+ return 'sonata_type_model_list';
|
|
|
+ }
|
|
|
+}
|