diff --git a/DependencyInjection/AdmingeneratorGeneratorExtension.php b/DependencyInjection/AdmingeneratorGeneratorExtension.php index 91a43ac..741b718 100644 --- a/DependencyInjection/AdmingeneratorGeneratorExtension.php +++ b/DependencyInjection/AdmingeneratorGeneratorExtension.php @@ -9,9 +9,9 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\HttpKernel\DependencyInjection\Extension; +use Symfony\Component\DependencyInjection\Extension\Extension; use Symfony\Component\Yaml\Yaml; use function Symfony\Component\DependencyInjection\Loader\Configurator\param; @@ -35,8 +35,8 @@ public function prepend(ContainerBuilder $container): void public function load(array $configs, ContainerBuilder $container): void { - $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('services.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.php'); $config = $this->processConfiguration($this->getConfiguration($configs, $container), $configs); @@ -107,11 +107,11 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde throw new ModelManagerNotSelectedException(); } - $loader = new XmlFileLoader($container, new FileLocator(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'config')); + $loader = new PhpFileLoader($container, new FileLocator(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'config')); $config['templates_dirs'][] = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'templates'; if ($config['use_doctrine_orm']) { - $loader->load('doctrine_orm.xml'); + $loader->load('doctrine_orm.php'); $this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.doctrine'), $config['templates_dirs']); if ($config['overwrite_if_exists']) { $container @@ -127,7 +127,7 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde } if ($config['use_doctrine_odm']) { - $loader->load('doctrine_odm.xml'); + $loader->load('doctrine_odm.php'); $this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.doctrine_odm'), $config['templates_dirs']); if ($config['overwrite_if_exists']) { $container @@ -143,7 +143,7 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde } if ($config['use_propel']) { - $loader->load('propel.xml'); + $loader->load('propel.php'); $this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.propel'), $config['templates_dirs']); if ($config['overwrite_if_exists']) { $container diff --git a/Resources/config/doctrine_odm.php b/Resources/config/doctrine_odm.php new file mode 100644 index 0000000..692cd60 --- /dev/null +++ b/Resources/config/doctrine_odm.php @@ -0,0 +1,29 @@ +parameters() + ->set('admingenerator.doctrine_odm.class', DoctrineODMGenerator::class) + ->set('admingenerator.fieldguesser.doctrine_odm.class', DoctrineODMFieldGuesser::class) + ->set('admingenerator.queryfilter.doctrine_odm.class', DoctrineODMQueryFilter::class); + + $services = $container->services(); + $services->set('admingenerator.fieldguesser.doctrine_odm', param('admingenerator.fieldguesser.doctrine_odm.class')) + ->arg('$registry', service('doctrine')) + ->arg('$objectModel', 'document'); + + $services->set('admingenerator.generator.doctrine_odm', param('admingenerator.doctrine_odm.class')) + ->arg('$outputDir', param('kernel.cache_dir')) + ->call('setBundleConfig', [param('admingenerator')]) + ->call('setFieldGuesser', [service('admingenerator.fieldguesser.doctrine_odm')]) + ->call('setRouter', [service('router')]) + ->call('setTwig', [service('twig')]) + ->call('setKernel', [service('kernel')]) + ->public(); +}; diff --git a/Resources/config/doctrine_odm.xml b/Resources/config/doctrine_odm.xml deleted file mode 100644 index 349f455..0000000 --- a/Resources/config/doctrine_odm.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Admingenerator\GeneratorBundle\Generator\DoctrineODMGenerator - Admingenerator\GeneratorBundle\Guesser\DoctrineODMFieldGuesser - Admingenerator\GeneratorBundle\QueryFilter\DoctrineODMQueryFilter - - - - - - - document - - - - %kernel.cache_dir% - - parameter('admingenerator') - - - - - - - - - - - - - - - - diff --git a/Resources/config/doctrine_orm.php b/Resources/config/doctrine_orm.php new file mode 100644 index 0000000..8032147 --- /dev/null +++ b/Resources/config/doctrine_orm.php @@ -0,0 +1,29 @@ +parameters() + ->set('admingenerator.doctrine.class', DoctrineGenerator::class) + ->set('admingenerator.fieldguesser.doctrine.class', DoctrineFieldGuesser::class) + ->set('admingenerator.queryfilter.doctrine.class', DoctrineQueryFilter::class); + + $services = $container->services(); + $services->set('admingenerator.fieldguesser.doctrine', param('admingenerator.fieldguesser.doctrine.class')) + ->arg('$registry', service('doctrine')) + ->arg('$objectModel', 'entity'); + + $services->set('admingenerator.generator.doctrine', param('admingenerator.doctrine.class')) + ->arg('$outputDir', param('kernel.cache_dir')) + ->call('setBundleConfig', [param('admingenerator')]) + ->call('setFieldGuesser', [service('admingenerator.fieldguesser.doctrine')]) + ->call('setRouter', [service('router')]) + ->call('setTwig', [service('twig')]) + ->call('setKernel', [service('kernel')]) + ->public(); +}; \ No newline at end of file diff --git a/Resources/config/doctrine_orm.xml b/Resources/config/doctrine_orm.xml deleted file mode 100644 index 0c3212c..0000000 --- a/Resources/config/doctrine_orm.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Admingenerator\GeneratorBundle\Generator\DoctrineGenerator - Admingenerator\GeneratorBundle\Guesser\DoctrineORMFieldGuesser - Admingenerator\GeneratorBundle\QueryFilter\DoctrineQueryFilter - - - - - - - entity - - - - %kernel.cache_dir% - - parameter('admingenerator') - - - - - - - - - - - - - - - - diff --git a/Resources/config/propel.php b/Resources/config/propel.php new file mode 100644 index 0000000..a41861f --- /dev/null +++ b/Resources/config/propel.php @@ -0,0 +1,27 @@ +parameters() + ->set('admingenerator.propel.class', PropelGenerator::class) + ->set('admingenerator.fieldguesser.propel.class', PropelORMFieldGuesser::class) + ->set('admingenerator.queryfilter.propel.class', PropelQueryFilter::class); + + $services = $container->services(); + $services->set('admingenerator.fieldguesser.propel', param('admingenerator.fieldguesser.propel.class')); + + $services->set('admingenerator.generator.propel', param('admingenerator.propel.class')) + ->arg('$outputDir', param('kernel.cache_dir')) + ->call('setBundleConfig', [param('admingenerator')]) + ->call('setFieldGuesser', [service('admingenerator.fieldguesser.propel')]) + ->call('setRouter', [service('router')]) + ->call('setTwig', [service('twig')]) + ->call('setKernel', [service('kernel')]) + ->public(); +}; \ No newline at end of file diff --git a/Resources/config/propel.xml b/Resources/config/propel.xml deleted file mode 100644 index de16fd6..0000000 --- a/Resources/config/propel.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Admingenerator\GeneratorBundle\Generator\PropelGenerator - Admingenerator\GeneratorBundle\Guesser\PropelORMFieldGuesser - Admingenerator\GeneratorBundle\QueryFilter\PropelQueryFilter - - - - - - - - - %kernel.cache_dir% - - parameter('admingenerator') - - - - - - - - - - - - - - - - diff --git a/Resources/config/services.php b/Resources/config/services.php new file mode 100644 index 0000000..872876a --- /dev/null +++ b/Resources/config/services.php @@ -0,0 +1,101 @@ +parameters() + ->set('routing.loader.admingenerator.class', RoutingLoader::class) + ->set('routing.loader.admingenerator_nested.class', NestedRoutingLoader::class) + ->set('admingenerator.generator_cache_builder', GeneratorCacheBuilder::class) + ->set('admingenerator.cache_warmer.class', GeneratorCacheWarmer::class) + ->set('form.type_guesser.admingenerator.class', ValidatorTypeGuesser::class) + ->set('admingenerator.pagination.class', AdmingeneratorView::class) + ->set('admingenerator.base_admin_template', '@AdmingeneratorGenerator/base.html.twig') + ->set('admingenerator.overwrite_if_exists', false) + ->set('admingenerator.validator.model_class.class', ModelClassValidator::class) + ->set('admingenerator.validator.propel_model_class.class', PropelModelClassValidator::class); + + $services = $container->services(); + $configureTwigExtension = static fn(string $id, string $class) => $services->set($id, $class)->tag('twig.extension'); + $configureTwigExtension('twig.extension.admingenerator.array', ArrayExtension::class); + $configureTwigExtension('twig.extension.admingenerator.classify', ClassifyExtension::class); + $configureTwigExtension('twig.extension.admingenerator.echo', EchoExtension::class); + $configureTwigExtension('twig.extension.admingenerator.extra_filter', ExtraFilterExtension::class); + $configureTwigExtension('twig.extension.admingenerator.twig_print', TwigPrintExtension::class); + $configureTwigExtension('twig.extension.admingenerator.php_print', PHPPrintExtension::class); + $configureTwigExtension('twig.extension.admingenerator.config', ConfigExtension::class) + ->arg('$bundleConfig', param('admingenerator')); + $configureTwigExtension('twig.extension.admingenerator.csrf', CsrfTokenExtension::class) + ->arg('$csrfTokenManager', service('security.csrf.token_manager')); + $configureTwigExtension('twig.extension.admingenerator.localized_money', LocalizedMoneyExtension::class); + $configureTwigExtension('twig.extension.admingenerator.extends', ExtendsAdmingeneratedExtension::class); + $configureTwigExtension('twig.extension.admingenerator.security', SecurityExtension::class) + ->arg('$authorizationChecker', AuthorizationCheckerInterface::class); + + $services->set('admingenerator.generator.listener', ControllerListener::class) + ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest']) + ->arg('$container', service('service_container')) + ->arg('$twig', service('twig')); + + $services->set('routing.loader.admingenerator', param('routing.loader.admingenerator.class')) + ->tag('routing.loader') + ->arg('$locator', service('file_locator')); + + $services->set('routing.loader.admingenerator_nested', param('routing.loader.admingenerator_nested.class')) + ->tag('routing.loader') + ->arg('$locator', service('file_locator')); + + $services->set('pagerfanta.view.admingenerator', param('admingenerator.pagination.class')) + ->tag('pagerfanta.view', ['alias' => 'admingenerator']) + ->arg('$translator', service('translator')); + + $services->set('admingenerator.maker.make_admin', MakeAdmin::class) + ->tag('maker.command') + ->tag('container.no_preload'); + $services->set('admingenerator.command.install-assets', AssetsInstallCommand::class) + ->tag('console.command', ['command' => 'admin:install-assets']) + ->arg('$projectDir', param('kernel.project_dir')); + + $services->set('admingenerator.validator.model_class', param('admingenerator.validator.model_class.class')) + ->tag('admingenerator.validator', ['alias' => 'model_class']); + + $services->set('admingenerator.validator.propel_model_class', param('admingenerator.validator.propel_model_class.class')) + ->tag('admingenerator.validator.propel', ['alias' => 'propel_model_class']); + + $services->set('admingenerator.generator_cache_builder', param('admingenerator.generator_cache_builder')) + ->arg('$container', service('service_container')); + + $services->set('admingenerator.cache_warmer', param('admingenerator.cache_warmer.class')) + ->tag('kernel.cache_warmer', ['priority' => 100]) + ->arg('$generatorCacheBuilder', service('admingenerator.generator_cache_builder')); + + $services->set('admingenerator.command.generate_base_classes', GenerateBaseClassesCommand::class) + ->tag('console.command', ['command' => 'admin:generate-base-classes']) + ->arg('$generatorCacheBuilder', service('admingenerator.generator_cache_builder')); +}; \ No newline at end of file diff --git a/Resources/config/services.xml b/Resources/config/services.xml deleted file mode 100644 index f245854..0000000 --- a/Resources/config/services.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - Admingenerator\GeneratorBundle\Routing\RoutingLoader - Admingenerator\GeneratorBundle\Routing\NestedRoutingLoader - Admingenerator\GeneratorBundle\CacheBuilder\GeneratorCacheBuilder - Admingenerator\GeneratorBundle\CacheWarmer\GeneratorCacheWarmer - Admingenerator\GeneratorBundle\Validator\ValidatorTypeGuesser - Admingenerator\GeneratorBundle\Pagerfanta\View\AdmingeneratorView - @AdmingeneratorGenerator/base.html.twig - false - Admingenerator\GeneratorBundle\Validator\ModelClassValidator - Admingenerator\GeneratorBundle\Validator\PropelModelClassValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - parameter('admingenerator') - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %kernel.project_dir% - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/composer.json b/composer.json index 0fd5824..d5bd8e4 100644 --- a/composer.json +++ b/composer.json @@ -24,28 +24,28 @@ "php": "^8.2", "doctrine/common": "~2.2||~3.0", "doctrine/inflector": "~1.4||~2.0", - "symfony/cache": ">=5.4,<8.0", + "symfony/cache": "~5.4|~6.4|~7.4|~8.0", "symfony/cache-contracts": "^1.0||^2.0||~3.0", - "symfony/config": ">=5.4,<8.0", - "symfony/console": ">=5.4,<8.0", - "symfony/dependency-injection": ">=5.4,<8.0", - "symfony/filesystem": ">=5.4,<8.0", - "symfony/finder": ">=5.4,<8.0", - "symfony/form": ">=5.4,<8.0", - "symfony/framework-bundle": ">=5.4,<8.0", - "symfony/http-foundation": ">=5.4,<8.0", - "symfony/http-kernel": ">=5.4,<8.0", - "symfony/options-resolver": ">=5.4,<8.0", - "symfony/process": ">=5.4,<8.0", - "symfony/routing": ">=5.4,<8.0", - "symfony/security-csrf": ">=5.4,<8.0", - "symfony/security-core": ">=5.4,<8.0", - "symfony/translation": ">=5.4,<8.0", - "symfony/twig-bundle": ">=5.4,<8.0", - "symfony/validator": ">=5.4,<8.0", - "symfony/yaml": ">=5.4,<8.0", + "symfony/config": "~5.4|~6.4|~7.4|~8.0", + "symfony/console": "~5.4|~6.4|~7.4|~8.0", + "symfony/dependency-injection": "~5.4|~6.4|~7.4|~8.0", + "symfony/filesystem": "~5.4|~6.4|~7.4|~8.0", + "symfony/finder": "~5.4|~6.4|~7.4|~8.0", + "symfony/form": "~5.4|~6.4|~7.4|~8.0", + "symfony/framework-bundle": "~5.4|~6.4|~7.4|~8.0", + "symfony/http-foundation": "~5.4|~6.4|~7.4|~8.0", + "symfony/http-kernel": "~5.4|~6.4|~7.4|~8.0", + "symfony/options-resolver": "~5.4|~6.4|~7.4|~8.0", + "symfony/process": "~5.4|~6.4|~7.4|~8.0", + "symfony/routing": "~5.4|~6.4|~7.4|~8.0", + "symfony/security-csrf": "~5.4|~6.4|~7.4|~8.0", + "symfony/security-core": "~5.4|~6.4|~7.4|~8.0", + "symfony/translation": "~5.4|~6.4|~7.4|~8.0", + "symfony/twig-bundle": "~5.4|~6.4|~7.4|~8.0", + "symfony/validator": "~5.4|~6.4|~7.4|~8.0", + "symfony/yaml": "~5.4|~6.4|~7.4|~8.0", "symfony2admingenerator/twig-generator": "^2.0.3", - "twig/twig": "^2.15.3||^3.4.3", + "twig/twig": "^3.4.3", "babdev/pagerfanta-bundle": "~4.0", "pagerfanta/pagerfanta": "~3.0||~4.0", "psr/log": "~1.0||~2.0||~3.0" @@ -54,6 +54,7 @@ "doctrine/dbal": ">=4.2.1", "doctrine/orm": ">=2.20.1", "symfony/maker-bundle": "~1.0", + "symfony/var-exporter": "~6.4|~7.4", "phpunit/phpunit": ">=11.5.2" }, "suggest": {