vendor/sonata-project/core-bundle/src/CoreBundle/SonataCoreBundle.php line 78

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the Sonata Project package.
  5.  *
  6.  * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Sonata\CoreBundle;
  12. use Nelmio\ApiDocBundle\Form\Extension\DescriptionFormTypeExtension;
  13. use Sonata\CoreBundle\DependencyInjection\Compiler\AdapterCompilerPass;
  14. use Sonata\CoreBundle\DependencyInjection\Compiler\FormCompilerPass;
  15. use Sonata\CoreBundle\DependencyInjection\Compiler\FormFactoryCompilerPass;
  16. use Sonata\CoreBundle\DependencyInjection\Compiler\StatusRendererCompilerPass;
  17. use Sonata\CoreBundle\DependencyInjection\Compiler\TwigCompilerPass;
  18. use Sonata\CoreBundle\Form\FormHelper;
  19. use Sonata\CoreBundle\Form\Type\ColorSelectorType;
  20. use Sonata\CoreBundle\Form\Type\ColorType;
  21. use Sonata\CoreBundle\Form\Type\TranslatableChoiceType;
  22. use Sonata\Form\Type\BooleanType;
  23. use Sonata\Form\Type\CollectionType;
  24. use Sonata\Form\Type\DatePickerType;
  25. use Sonata\Form\Type\DateRangePickerType;
  26. use Sonata\Form\Type\DateRangeType;
  27. use Sonata\Form\Type\DateTimePickerType;
  28. use Sonata\Form\Type\DateTimeRangePickerType;
  29. use Sonata\Form\Type\DateTimeRangeType;
  30. use Sonata\Form\Type\EqualType;
  31. use Sonata\Form\Type\ImmutableArrayType;
  32. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  33. use Symfony\Component\DependencyInjection\ContainerBuilder;
  34. use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
  35. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  36. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  37. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  38. use Symfony\Component\Form\Extension\Core\Type\CollectionType as SymfonyCollectionType;
  39. use Symfony\Component\Form\Extension\Core\Type\CountryType;
  40. use Symfony\Component\Form\Extension\Core\Type\CurrencyType;
  41. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  42. use Symfony\Component\Form\Extension\Core\Type\DateType;
  43. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  44. use Symfony\Component\Form\Extension\Core\Type\FileType;
  45. use Symfony\Component\Form\Extension\Core\Type\FormType;
  46. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  47. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  48. use Symfony\Component\Form\Extension\Core\Type\LanguageType;
  49. use Symfony\Component\Form\Extension\Core\Type\LocaleType;
  50. use Symfony\Component\Form\Extension\Core\Type\MoneyType;
  51. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  52. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  53. use Symfony\Component\Form\Extension\Core\Type\PercentType;
  54. use Symfony\Component\Form\Extension\Core\Type\RadioType;
  55. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  56. use Symfony\Component\Form\Extension\Core\Type\ResetType;
  57. use Symfony\Component\Form\Extension\Core\Type\SearchType;
  58. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  59. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  60. use Symfony\Component\Form\Extension\Core\Type\TextType;
  61. use Symfony\Component\Form\Extension\Core\Type\TimeType;
  62. use Symfony\Component\Form\Extension\Core\Type\TimezoneType;
  63. use Symfony\Component\Form\Extension\Core\Type\UrlType;
  64. use Symfony\Component\HttpKernel\Bundle\Bundle;
  65. /**
  66.  * @deprecated since sonata-project/core-bundle 3.19, to be removed in 4.0.
  67.  * Use
  68.  *  sonata-project/doctrine-extensions,
  69.  *  sonata-project/form-extensions,
  70.  *  sonata-project/twig-extensions
  71.  * instead.
  72.  */
  73. class SonataCoreBundle extends Bundle
  74. {
  75.     public function build(ContainerBuilder $container)
  76.     {
  77.         $container->addCompilerPass(new StatusRendererCompilerPass());
  78.         $container->addCompilerPass(new AdapterCompilerPass());
  79.         $container->addCompilerPass(new FormFactoryCompilerPass());
  80.         $container->addCompilerPass(new FormCompilerPass());
  81.         $container->addCompilerPass(new TwigCompilerPass());
  82.         $this->registerFormMapping();
  83.     }
  84.     public function boot()
  85.     {
  86.         // not sur we need this at Runtime ...
  87.         $this->registerFormMapping();
  88.     }
  89.     /**
  90.      * Register form mapping information.
  91.      */
  92.     public function registerFormMapping()
  93.     {
  94.         // symfony
  95.         FormHelper::registerFormTypeMapping([
  96.             'form' => FormType::class,
  97.             'birthday' => BirthdayType::class,
  98.             'checkbox' => CheckboxType::class,
  99.             'choice' => ChoiceType::class,
  100.             'collection' => SymfonyCollectionType::class,
  101.             'country' => CountryType::class,
  102.             'date' => DateType::class,
  103.             'datetime' => DateTimeType::class,
  104.             'email' => EmailType::class,
  105.             'file' => FileType::class,
  106.             'hidden' => HiddenType::class,
  107.             'integer' => IntegerType::class,
  108.             'language' => LanguageType::class,
  109.             'locale' => LocaleType::class,
  110.             'money' => MoneyType::class,
  111.             'number' => NumberType::class,
  112.             'password' => PasswordType::class,
  113.             'percent' => PercentType::class,
  114.             'radio' => RadioType::class,
  115.             'repeated' => RepeatedType::class,
  116.             'search' => SearchType::class,
  117.             'textarea' => TextareaType::class,
  118.             'text' => TextType::class,
  119.             'time' => TimeType::class,
  120.             'timezone' => TimezoneType::class,
  121.             'url' => UrlType::class,
  122.             'button' => ButtonType::class,
  123.             'submit' => SubmitType::class,
  124.             'reset' => ResetType::class,
  125.             'currency' => CurrencyType::class,
  126.             'entity' => EntityType::class,
  127.         ]);
  128.         // core bundle
  129.         FormHelper::registerFormTypeMapping([
  130.             'sonata_type_immutable_array' => ImmutableArrayType::class,
  131.             'sonata_type_boolean' => BooleanType::class,
  132.             'sonata_type_collection' => CollectionType::class,
  133.             'sonata_type_translatable_choice' => TranslatableChoiceType::class,
  134.             'sonata_type_date_range' => DateRangeType::class,
  135.             'sonata_type_datetime_range' => DateTimeRangeType::class,
  136.             'sonata_type_date_picker' => DatePickerType::class,
  137.             'sonata_type_datetime_picker' => DateTimePickerType::class,
  138.             'sonata_type_date_range_picker' => DateRangePickerType::class,
  139.             'sonata_type_datetime_range_picker' => DateTimeRangePickerType::class,
  140.             'sonata_type_equal' => EqualType::class,
  141.             'sonata_type_color' => ColorType::class,
  142.             'sonata_type_color_selector' => ColorSelectorType::class,
  143.         ]);
  144.         $formTypes = [
  145.             'form.type_extension.form.http_foundation',
  146.             'form.type_extension.form.validator',
  147.             'form.type_extension.csrf',
  148.             'form.type_extension.form.data_collector',
  149.         ];
  150.         if (class_exists(DescriptionFormTypeExtension::class)) {
  151.             $formTypes[] = 'nelmio_api_doc.form.extension.description_form_type_extension';
  152.         }
  153.         FormHelper::registerFormExtensionMapping('form'$formTypes);
  154.         FormHelper::registerFormExtensionMapping('repeated', [
  155.             'form.type_extension.repeated.validator',
  156.         ]);
  157.         FormHelper::registerFormExtensionMapping('submit', [
  158.             'form.type_extension.submit.validator',
  159.         ]);
  160.         if ($this->container && $this->container->hasParameter('sonata.core.form.mapping.type')) {
  161.             // from configuration file
  162.             FormHelper::registerFormTypeMapping($this->container->getParameter('sonata.core.form.mapping.type'));
  163.             foreach ($this->container->getParameter('sonata.core.form.mapping.extension') as $ext => $types) {
  164.                 FormHelper::registerFormExtensionMapping($ext$types);
  165.             }
  166.         }
  167.     }
  168. }