diff --git a/composer.json b/composer.json index 000a0d1..180612f 100644 --- a/composer.json +++ b/composer.json @@ -33,6 +33,7 @@ "symfony/console": "^7.3 || ^8.0", "symfony/security-core": "^7.3 || ^8.0", "symfony/security-http": "^7.3 || ^8.0", + "symfony/yaml": "^7.3 || ^8.0", "api-platform/symfony": "^4.2", "api-platform/doctrine-orm": "^4.2", "lexik/jwt-authentication-bundle": "^3.1", diff --git a/src/DependencyInjection/NetgenApiPlatformExtrasExtension.php b/src/DependencyInjection/NetgenApiPlatformExtrasExtension.php index f75f49c..cc05ad6 100644 --- a/src/DependencyInjection/NetgenApiPlatformExtrasExtension.php +++ b/src/DependencyInjection/NetgenApiPlatformExtrasExtension.php @@ -5,13 +5,17 @@ namespace Netgen\ApiPlatformExtras\DependencyInjection; use Symfony\Component\Config\Definition\ConfigurationInterface; +use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; +use Symfony\Component\Yaml\Yaml; +use function file_get_contents; use function in_array; use function is_array; -final class NetgenApiPlatformExtrasExtension extends Extension +final class NetgenApiPlatformExtrasExtension extends Extension implements PrependExtensionInterface { private const array SCALAR_ARRAY_PARAMS = [ 'ignored_routes', @@ -29,6 +33,18 @@ public function load(array $configs, ContainerBuilder $container): void $this->setParameters($container, $config, $this->getAlias()); } + public function prepend(ContainerBuilder $container): void + { + if (!$container->hasExtension('doctrine')) { + return; + } + + $configFile = __DIR__ . '/../Resources/config/doctrine.yaml'; + $config = Yaml::parse((string) file_get_contents($configFile)); + $container->prependExtensionConfig('doctrine', $config['doctrine']); + $container->addResource(new FileResource($configFile)); + } + /** * @param mixed[] $config */ diff --git a/src/Resources/config/doctrine.yaml b/src/Resources/config/doctrine.yaml new file mode 100644 index 0000000..0cc548a --- /dev/null +++ b/src/Resources/config/doctrine.yaml @@ -0,0 +1,8 @@ +doctrine: + orm: + mappings: + NetgenApiPlatformExtras: + type: xml + is_bundle: false + dir: '%kernel.project_dir%/vendor/netgen/api-platform-extras/src/Resources/config/doctrine' + prefix: 'Netgen\ApiPlatformExtras\Entity' diff --git a/config/doctrine/RefreshToken.orm.xml b/src/Resources/config/doctrine/RefreshToken.orm.xml similarity index 100% rename from config/doctrine/RefreshToken.orm.xml rename to src/Resources/config/doctrine/RefreshToken.orm.xml