Skip to content

Commit 5d06583

Browse files
committed
Add support for customizable api resources folder's name.
1 parent f962337 commit 5d06583

File tree

4 files changed

+8
-1
lines changed

4 files changed

+8
-1
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ private function handleConfig(ContainerBuilder $container, array $config, array
113113
$container->setParameter('api_platform.exception_to_status', $config['exception_to_status']);
114114
$container->setParameter('api_platform.formats', $formats);
115115
$container->setParameter('api_platform.error_formats', $errorFormats);
116+
$container->setParameter('api_platform.api_resources_directory', $config['api_resources_directory']);
116117
$container->setParameter('api_platform.eager_loading.enabled', $config['eager_loading']['enabled']);
117118
$container->setParameter('api_platform.eager_loading.max_joins', $config['eager_loading']['max_joins']);
118119
$container->setParameter('api_platform.eager_loading.force_eager', $config['eager_loading']['force_eager']);
@@ -168,6 +169,7 @@ private function getResourcesToWatch(ContainerBuilder $container, array $bundles
168169
$resourceClassDirectories = $loaderPaths['annotation'];
169170
$xmlResources = $loaderPaths['xml'];
170171
$yamlResources = $loaderPaths['yaml'];
172+
$resourcesDirectory = $container->getParameter('api_platform.api_resources_directory');
171173

172174
foreach ($bundles as $bundle) {
173175
$bundleDirectory = dirname((new \ReflectionClass($bundle))->getFileName());
@@ -176,7 +178,7 @@ private function getResourcesToWatch(ContainerBuilder $container, array $bundles
176178
$xmlResources = array_merge($xmlResources, $newXmlResources);
177179
$yamlResources = array_merge($yamlResources, $newYamlResources);
178180

179-
if (file_exists($entityDirectory = $bundleDirectory.'/Entity')) {
181+
if (file_exists($entityDirectory = $bundleDirectory.'/'.$resourcesDirectory)) {
180182
$resourceClassDirectories[] = $entityDirectory;
181183
$container->addResource(new DirectoryResource($entityDirectory, '/\.php$/'));
182184
}

src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public function getConfigTreeBuilder()
4545
->scalarNode('version')->defaultValue('0.0.0')->info('The version of the API.')->end()
4646
->scalarNode('default_operation_path_resolver')->defaultValue('api_platform.operation_path_resolver.underscore')->info('Specify the default operation path resolver to use for generating resources operations path.')->end()
4747
->scalarNode('name_converter')->defaultNull()->info('Specify a name converter to use.')->end()
48+
->scalarNode('api_resources_directory')->defaultValue('Entity')->info('The name of the directory within the bundles that contains the api resources.')->end()
4849
->arrayNode('eager_loading')
4950
->canBeDisabled()
5051
->addDefaultsIfNotSet()

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ApiPlatformExtensionTest extends \PHPUnit_Framework_TestCase
4040
const DEFAULT_CONFIG = ['api_platform' => [
4141
'title' => 'title',
4242
'description' => 'description',
43+
'api_resources_directory' => 'Entity',
4344
'version' => 'version',
4445
'formats' => [
4546
'jsonld' => ['mime_types' => ['application/ld+json']],
@@ -234,6 +235,7 @@ private function getContainerBuilderProphecy()
234235
'api_platform.collection.pagination.items_per_page_parameter_name' => 'itemsPerPage',
235236
'api_platform.collection.pagination.maximum_items_per_page' => null,
236237
'api_platform.collection.pagination.page_parameter_name' => 'page',
238+
'api_platform.api_resources_directory' => 'Entity',
237239
'api_platform.description' => 'description',
238240
'api_platform.error_formats' => ['jsonproblem' => ['application/problem+json'], 'jsonld' => ['application/ld+json']],
239241
'api_platform.oauth.enabled' => false,
@@ -415,6 +417,7 @@ private function getContainerBuilderProphecy()
415417
}
416418

417419
$containerBuilderProphecy->getParameter('kernel.debug')->willReturn(false);
420+
$containerBuilderProphecy->getParameter('api_platform.api_resources_directory')->willReturn('Entity');
418421

419422
return $containerBuilderProphecy;
420423
}

tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public function testDefaultConfig()
107107
'yaml' => [],
108108
'xml' => [],
109109
],
110+
'api_resources_directory' => 'Entity',
110111
], $config);
111112
}
112113

0 commit comments

Comments
 (0)