vendor/easycorp/easyadmin-bundle/src/Resources/config/services.php line 94

  1. <?php
  2. namespace Symfony\Component\DependencyInjection\Loader\Configurator;
  3. use EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\AdminContextResolver;
  4. use EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\BatchActionDtoResolver;
  5. use EasyCorp\Bundle\EasyAdminBundle\Asset\AssetPackage;
  6. use EasyCorp\Bundle\EasyAdminBundle\Cache\CacheWarmer;
  7. use EasyCorp\Bundle\EasyAdminBundle\Command\MakeAdminDashboardCommand;
  8. use EasyCorp\Bundle\EasyAdminBundle\Command\MakeCrudControllerCommand;
  9. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldConfiguratorInterface;
  10. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Filter\FilterConfiguratorInterface;
  11. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Menu\MenuItemMatcherInterface;
  12. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Orm\EntityPaginatorInterface;
  13. use EasyCorp\Bundle\EasyAdminBundle\DependencyInjection\EasyAdminExtension;
  14. use EasyCorp\Bundle\EasyAdminBundle\EventListener\AdminRouterSubscriber;
  15. use EasyCorp\Bundle\EasyAdminBundle\EventListener\CrudResponseListener;
  16. use EasyCorp\Bundle\EasyAdminBundle\EventListener\ExceptionListener;
  17. use EasyCorp\Bundle\EasyAdminBundle\Factory\ActionFactory;
  18. use EasyCorp\Bundle\EasyAdminBundle\Factory\AdminContextFactory;
  19. use EasyCorp\Bundle\EasyAdminBundle\Factory\ControllerFactory;
  20. use EasyCorp\Bundle\EasyAdminBundle\Factory\EntityFactory;
  21. use EasyCorp\Bundle\EasyAdminBundle\Factory\FieldFactory;
  22. use EasyCorp\Bundle\EasyAdminBundle\Factory\FilterFactory;
  23. use EasyCorp\Bundle\EasyAdminBundle\Factory\FormFactory;
  24. use EasyCorp\Bundle\EasyAdminBundle\Factory\FormLayoutFactory;
  25. use EasyCorp\Bundle\EasyAdminBundle\Factory\MenuFactory;
  26. use EasyCorp\Bundle\EasyAdminBundle\Factory\PaginatorFactory;
  27. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\ArrayConfigurator;
  28. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\AssociationConfigurator;
  29. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\AvatarConfigurator;
  30. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\BooleanConfigurator;
  31. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\ChoiceConfigurator;
  32. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CodeEditorConfigurator;
  33. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CollectionConfigurator;
  34. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CommonPostConfigurator;
  35. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CommonPreConfigurator;
  36. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CountryConfigurator;
  37. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\CurrencyConfigurator;
  38. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\DateTimeConfigurator;
  39. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\EmailConfigurator;
  40. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\FormConfigurator;
  41. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\IdConfigurator;
  42. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\ImageConfigurator;
  43. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\IntegerConfigurator;
  44. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\LanguageConfigurator;
  45. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\LocaleConfigurator;
  46. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\MoneyConfigurator;
  47. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\NumberConfigurator;
  48. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\PercentConfigurator;
  49. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\SlugConfigurator;
  50. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\TelephoneConfigurator;
  51. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\TextConfigurator;
  52. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\TextEditorConfigurator;
  53. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\TimezoneConfigurator;
  54. use EasyCorp\Bundle\EasyAdminBundle\Field\Configurator\UrlConfigurator;
  55. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\ChoiceConfigurator as ChoiceFilterConfigurator;
  56. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\CommonConfigurator as CommonFilterConfigurator;
  57. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\ComparisonConfigurator as ComparisonFilterConfigurator;
  58. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\DateTimeConfigurator as DateTimeFilterConfigurator;
  59. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\EntityConfigurator as EntityFilterConfigurator;
  60. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\NullConfigurator as NullFilterConfigurator;
  61. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\NumericConfigurator as NumericFilterConfigurator;
  62. use EasyCorp\Bundle\EasyAdminBundle\Filter\Configurator\TextConfigurator as TextFilterConfigurator;
  63. use EasyCorp\Bundle\EasyAdminBundle\Form\Extension\CollectionTypeExtension;
  64. use EasyCorp\Bundle\EasyAdminBundle\Form\Extension\EaCrudFormTypeExtension;
  65. use EasyCorp\Bundle\EasyAdminBundle\Form\Type\CrudFormType;
  66. use EasyCorp\Bundle\EasyAdminBundle\Form\Type\FileUploadType;
  67. use EasyCorp\Bundle\EasyAdminBundle\Form\Type\FiltersFormType;
  68. use EasyCorp\Bundle\EasyAdminBundle\Inspector\DataCollector;
  69. use EasyCorp\Bundle\EasyAdminBundle\Intl\IntlFormatter;
  70. use EasyCorp\Bundle\EasyAdminBundle\Maker\ClassMaker;
  71. use EasyCorp\Bundle\EasyAdminBundle\Menu\MenuItemMatcher;
  72. use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityPaginator;
  73. use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository;
  74. use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityUpdater;
  75. use EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
  76. use EasyCorp\Bundle\EasyAdminBundle\Provider\FieldProvider;
  77. use EasyCorp\Bundle\EasyAdminBundle\Registry\CrudControllerRegistry;
  78. use EasyCorp\Bundle\EasyAdminBundle\Registry\DashboardControllerRegistry;
  79. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  80. use EasyCorp\Bundle\EasyAdminBundle\Router\UrlSigner;
  81. use EasyCorp\Bundle\EasyAdminBundle\Security\AuthorizationChecker;
  82. use EasyCorp\Bundle\EasyAdminBundle\Security\SecurityVoter;
  83. use EasyCorp\Bundle\EasyAdminBundle\Twig\EasyAdminTwigExtension;
  84. use Symfony\Component\DependencyInjection\ContainerInterface;
  85. use Symfony\Component\DependencyInjection\Reference;
  86. use Symfony\Component\DependencyInjection\ServiceLocator;
  87. use Symfony\Component\HttpKernel\Event\ViewEvent;
  88. use Symfony\Component\HttpKernel\KernelInterface;
  89. return static function (ContainerConfigurator $container) {
  90.     $services $container->services()
  91.         ->defaults()->private()
  92.         ->instanceof(FieldConfiguratorInterface::class)->tag(EasyAdminExtension::TAG_FIELD_CONFIGURATOR)
  93.         ->instanceof(FilterConfiguratorInterface::class)->tag(EasyAdminExtension::TAG_FILTER_CONFIGURATOR);
  94.     $services
  95.         ->set(MakeAdminDashboardCommand::class)->public()
  96.             ->arg(0service(ClassMaker::class))
  97.             ->arg(1param('kernel.project_dir'))
  98.             ->tag('console.command')
  99.         ->set(MakeCrudControllerCommand::class)->public()
  100.             ->arg(0param('kernel.project_dir'))
  101.             ->arg(1service(ClassMaker::class))
  102.             ->arg(2service('doctrine'))
  103.             ->tag('console.command')
  104.         ->set(ClassMaker::class)
  105.             ->arg(0service(KernelInterface::class))
  106.             ->arg(1param('kernel.project_dir'))
  107.         ->set(CacheWarmer::class)
  108.             ->arg(0service('router'))
  109.             ->tag('kernel.cache_warmer')
  110.         ->set(DataCollector::class)
  111.             ->arg(0service(AdminContextProvider::class))
  112.             ->tag('data_collector', ['id' => 'easyadmin''template' => '@EasyAdmin/inspector/data_collector.html.twig'])
  113.         ->set(ExceptionListener::class)
  114.             ->arg(0'%kernel.debug%')
  115.             ->arg(1service(AdminContextProvider::class))
  116.             ->arg(2service('twig'))
  117.             ->tag('kernel.event_listener', ['event' => 'kernel.exception''priority' => -64])
  118.         ->set(EasyAdminTwigExtension::class)
  119.             // I don't know if we truly need the locator to get a new instance of the
  120.             // service whenever we generate a new URL, Maybe it's enough with the route parameter
  121.             // initialization done after generating each URL
  122.             ->arg(0service('service_locator_'.AdminUrlGenerator::class))
  123.             ->arg(1service(AdminContextProvider::class))
  124.             ->arg(2, new Reference('security.csrf.token_manager'ContainerInterface::NULL_ON_INVALID_REFERENCE))
  125.             ->tag('twig.extension')
  126.         ->set(EaCrudFormTypeExtension::class)
  127.             ->arg(0service(AdminContextProvider::class))
  128.             ->tag('form.type_extension')
  129.         ->set(CollectionTypeExtension::class)
  130.             ->tag('form.type_extension')
  131.         ->set(AuthorizationChecker::class)
  132.             ->arg(0, new Reference('security.authorization_checker'ContainerInterface::NULL_ON_INVALID_REFERENCE))
  133.         ->set(IntlFormatter::class)
  134.         ->set(AdminContextProvider::class)
  135.             ->arg(0service('request_stack'))
  136.         ->set(AdminContextResolver::class)
  137.             ->arg(0service(AdminContextProvider::class))
  138.             ->tag('controller.argument_value_resolver')
  139.         ->set(BatchActionDtoResolver::class)
  140.             ->arg(0service(AdminContextProvider::class))
  141.             ->arg(1service(AdminUrlGenerator::class))
  142.             ->tag('controller.argument_value_resolver')
  143.         ->set(AdminRouterSubscriber::class)
  144.             ->arg(0service(AdminContextFactory::class))
  145.             ->arg(1service(ControllerFactory::class))
  146.             ->arg(2service('controller_resolver'))
  147.             ->arg(3service('router'))
  148.             ->arg(4service('router'))
  149.             ->tag('kernel.event_subscriber')
  150.         ->set(ControllerFactory::class)
  151.             ->arg(0service('controller_resolver'))
  152.         ->set(CrudResponseListener::class)
  153.             ->arg(0service(AdminContextProvider::class))
  154.             ->arg(1service('twig'))
  155.             ->tag('kernel.event_listener', ['event' => ViewEvent::class])
  156.         ->set(AdminContextFactory::class)
  157.             ->arg(0'%kernel.cache_dir%')
  158.             ->arg(1, new Reference('security.token_storage'ContainerInterface::NULL_ON_INVALID_REFERENCE))
  159.             ->arg(2, new Reference(MenuFactory::class))
  160.             ->arg(3, new Reference(CrudControllerRegistry::class))
  161.             ->arg(4, new Reference(EntityFactory::class))
  162.         ->set(AdminUrlGenerator::class)
  163.             // I don't know if we truly need the share() method to get a new instance of the
  164.             // service whenever we generate a new URL. Maybe it's enough with the route parameter
  165.             // initialization done after generating each URL
  166.             ->share(false)
  167.             ->arg(0service(AdminContextProvider::class))
  168.             ->arg(1service('router'))
  169.             ->arg(2service(DashboardControllerRegistry::class))
  170.         ->set('service_locator_'.AdminUrlGenerator::class, ServiceLocator::class)
  171.             ->args([[AdminUrlGenerator::class => service(AdminUrlGenerator::class)]])
  172.             ->tag('container.service_locator')
  173.         ->set(UrlSigner::class)
  174.             ->arg(0'%kernel.secret%')
  175.         ->set(MenuFactory::class)
  176.             ->arg(0service(AdminContextProvider::class))
  177.             ->arg(1service(AuthorizationChecker::class))
  178.             ->arg(2service('security.logout_url_generator'))
  179.             ->arg(3service(AdminUrlGenerator::class))
  180.             ->arg(4service(MenuItemMatcherInterface::class))
  181.         ->set(MenuItemMatcher::class)
  182.             ->arg(0service(AdminContextProvider::class))
  183.         ->alias(MenuItemMatcherInterface::class, MenuItemMatcher::class)
  184.         ->set(EntityRepository::class)
  185.             ->arg(0service(AdminContextProvider::class))
  186.             ->arg(1service('doctrine'))
  187.             ->arg(2service(EntityFactory::class))
  188.             ->arg(3service(FormFactory::class))
  189.             ->arg(4service('event_dispatcher'))
  190.         ->set(EntityFactory::class)
  191.             ->arg(0service(FieldFactory::class))
  192.             ->arg(1service(ActionFactory::class))
  193.             ->arg(2service(AuthorizationChecker::class))
  194.             ->arg(3service('doctrine'))
  195.             ->arg(4service('event_dispatcher'))
  196.         ->set(EntityPaginator::class)
  197.             ->arg(0service(AdminUrlGenerator::class))
  198.             ->arg(1service(EntityFactory::class))
  199.         ->alias(EntityPaginatorInterface::class, EntityPaginator::class)
  200.         ->set(EntityUpdater::class)
  201.             ->arg(0service('property_accessor'))
  202.             ->arg(1service('validator'))
  203.         ->set(PaginatorFactory::class)
  204.             ->arg(0service(AdminContextProvider::class))
  205.             ->arg(1service(EntityPaginatorInterface::class))
  206.         ->set(FormFactory::class)
  207.             ->arg(0service('form.factory'))
  208.         ->set(FormLayoutFactory::class)
  209.         ->set(FieldFactory::class)
  210.             ->arg(0service(AdminContextProvider::class))
  211.             ->arg(1service(AuthorizationChecker::class))
  212.             ->arg(2tagged_iterator(EasyAdminExtension::TAG_FIELD_CONFIGURATOR))
  213.             ->arg(3service(FormLayoutFactory::class))
  214.         ->set(FieldProvider::class)
  215.             ->arg(0service(AdminContextProvider::class))
  216.         ->set(FilterFactory::class)
  217.             ->arg(0service(AdminContextProvider::class))
  218.             ->arg(1tagged_iterator(EasyAdminExtension::TAG_FILTER_CONFIGURATOR))
  219.         ->set(FiltersFormType::class)
  220.             ->tag('form.type', ['alias' => 'ea_filters'])
  221.         ->set(FileUploadType::class)
  222.             ->arg(0param('kernel.project_dir'))
  223.             ->tag('form.type')
  224.         ->set(ChoiceFilterConfigurator::class)
  225.         ->set(CommonFilterConfigurator::class)
  226.             ->tag(EasyAdminExtension::TAG_FILTER_CONFIGURATOR, ['priority' => 9999])
  227.         ->set(ComparisonFilterConfigurator::class)
  228.         ->set(DateTimeFilterConfigurator::class)
  229.         ->set(EntityFilterConfigurator::class)
  230.         ->set(NullFilterConfigurator::class)
  231.         ->set(NumericFilterConfigurator::class)
  232.         ->set(TextFilterConfigurator::class)
  233.         ->set(ActionFactory::class)
  234.             ->arg(0, new Reference(AdminContextProvider::class))
  235.             ->arg(1, new Reference(AuthorizationChecker::class))
  236.             ->arg(2, new Reference(AdminUrlGenerator::class))
  237.             ->arg(3, new Reference('security.csrf.token_manager'ContainerInterface::NULL_ON_INVALID_REFERENCE))
  238.         ->set(SecurityVoter::class)
  239.             ->arg(0service(AuthorizationChecker::class))
  240.             ->arg(1service(AdminContextProvider::class))
  241.             ->tag('security.voter')
  242.         ->set(CrudFormType::class)
  243.             ->arg(0service('form.type_guesser.doctrine'))
  244.             ->tag('form.type', ['alias' => 'ea_crud'])
  245.         ->set(ArrayConfigurator::class)
  246.         ->set(AssociationConfigurator::class)
  247.             ->arg(0, new Reference(EntityFactory::class))
  248.             ->arg(1, new Reference(AdminUrlGenerator::class))
  249.             ->arg(2service('request_stack'))
  250.             ->arg(3service(ControllerFactory::class))
  251.         ->set(AvatarConfigurator::class)
  252.         ->set(BooleanConfigurator::class)
  253.             ->arg(0service(AdminUrlGenerator::class))
  254.             ->arg(1, new Reference('security.csrf.token_manager'ContainerInterface::NULL_ON_INVALID_REFERENCE))
  255.         ->set(CodeEditorConfigurator::class)
  256.         ->set(CollectionConfigurator::class)
  257.         ->set(CommonPostConfigurator::class)
  258.             ->arg(0service(AdminContextProvider::class))
  259.             ->arg(1'%kernel.charset%')
  260.             ->tag(EasyAdminExtension::TAG_FIELD_CONFIGURATOR, ['priority' => -9999])
  261.         ->set(CommonPreConfigurator::class)
  262.             ->arg(0, new Reference('property_accessor'))
  263.             ->arg(1service(EntityFactory::class))
  264.             ->tag(EasyAdminExtension::TAG_FIELD_CONFIGURATOR, ['priority' => 9999])
  265.         ->set(CountryConfigurator::class)
  266.             ->arg(0service(AssetPackage::class))
  267.         ->set(CurrencyConfigurator::class)
  268.         ->set(DateTimeConfigurator::class)
  269.             ->arg(0service(IntlFormatter::class))
  270.         ->set(EmailConfigurator::class)
  271.         ->set(FormConfigurator::class)
  272.         ->set(IdConfigurator::class)
  273.         ->set(ImageConfigurator::class)
  274.             ->arg(0param('kernel.project_dir'))
  275.         ->set(IntegerConfigurator::class)
  276.         ->set(LanguageConfigurator::class)
  277.         ->set(LocaleConfigurator::class)
  278.         ->set(MoneyConfigurator::class)
  279.             ->arg(0service(IntlFormatter::class))
  280.             ->arg(1service('property_accessor'))
  281.         ->set(NumberConfigurator::class)
  282.             ->arg(0service(IntlFormatter::class))
  283.         ->set(PercentConfigurator::class)
  284.         ->set(ChoiceConfigurator::class)
  285.         ->set(CollectionConfigurator::class)
  286.             ->arg(0service('request_stack'))
  287.             ->arg(1service(EntityFactory::class))
  288.             ->arg(2service(ControllerFactory::class))
  289.         ->set(SlugConfigurator::class)
  290.         ->set(TelephoneConfigurator::class)
  291.         ->set(TextConfigurator::class)
  292.         ->set(TextEditorConfigurator::class)
  293.         ->set(TimezoneConfigurator::class)
  294.         ->set(UrlConfigurator::class)
  295.         ->set(AssetPackage::class)
  296.             ->arg(0service('request_stack'))
  297.             ->tag('assets.package', ['package' => AssetPackage::PACKAGE_NAME])
  298.     ;
  299. };