ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Configuration::getConfigTreeBuilder PHP Method

getConfigTreeBuilder() public method

    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('api_platform');
        $rootNode->children()->scalarNode('title')->defaultValue('')->info('The title of the API.')->end()->scalarNode('description')->defaultValue('')->info('The description of the API.')->end()->scalarNode('version')->defaultValue('0.0.0')->info('The version of the API.')->end()->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()->scalarNode('name_converter')->defaultNull()->info('Specify a name converter to use.')->end()->arrayNode('eager_loading')->canBeDisabled()->addDefaultsIfNotSet()->children()->booleanNode('enabled')->defaultTrue()->info('To enable or disable eager loading')->end()->integerNode('max_joins')->defaultValue(30)->info('Max number of joined relations before EagerLoading throws a RuntimeException')->end()->booleanNode('force_eager')->defaultTrue()->info('Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode.')->end()->end()->end()->booleanNode('enable_fos_user')->defaultValue(false)->info('Enable the FOSUserBundle integration.')->end()->booleanNode('enable_nelmio_api_doc')->defaultValue(false)->info('Enable the Nelmio Api doc integration.')->end()->booleanNode('enable_swagger')->defaultValue(true)->info('Enable the Swagger documentation and export.')->end()->booleanNode('enable_swagger_ui')->defaultValue(true)->info('Enable Swagger ui.')->end()->arrayNode('collection')->addDefaultsIfNotSet()->children()->scalarNode('order')->defaultNull()->info('The default order of results.')->end()->scalarNode('order_parameter_name')->defaultValue('order')->cannotBeEmpty()->info('The name of the query parameter to order results.')->end()->arrayNode('pagination')->canBeDisabled()->addDefaultsIfNotSet()->children()->booleanNode('enabled')->defaultTrue()->info('To enable or disable pagination for all resource collections by default.')->end()->booleanNode('client_enabled')->defaultFalse()->info('To allow the client to enable or disable the pagination.')->end()->booleanNode('client_items_per_page')->defaultFalse()->info('To allow the client to set the number of items per page.')->end()->integerNode('items_per_page')->defaultValue(30)->info('The default number of items per page.')->end()->integerNode('maximum_items_per_page')->defaultNull()->info('The maximum number of items per page.')->end()->scalarNode('page_parameter_name')->defaultValue('page')->cannotBeEmpty()->info('The default name of the parameter handling the page number.')->end()->scalarNode('enabled_parameter_name')->defaultValue('pagination')->cannotBeEmpty()->info('The name of the query parameter to enable or disable pagination.')->end()->scalarNode('items_per_page_parameter_name')->defaultValue('itemsPerPage')->cannotBeEmpty()->info('The name of the query parameter to set the number of items per page.')->end()->end()->end()->end()->end()->end();
        $this->addExceptionToStatusSection($rootNode);
        $this->addFormatSection($rootNode, 'formats', ['jsonld' => ['mime_types' => ['application/ld+json']], 'json' => ['mime_types' => ['application/json']], 'html' => ['mime_types' => ['text/html']]]);
        $this->addFormatSection($rootNode, 'error_formats', ['jsonproblem' => ['mime_types' => ['application/problem+json']], 'jsonld' => ['mime_types' => ['application/ld+json']]]);
        return $treeBuilder;
    }

Usage Example

 public function testDefaultConfig()
 {
     $treeBuilder = $this->configuration->getConfigTreeBuilder();
     $config = $this->processor->processConfiguration($this->configuration, ['api_platform' => ['title' => 'title', 'description' => 'description', 'version' => '1.0.0']]);
     $this->assertInstanceOf(ConfigurationInterface::class, $this->configuration);
     $this->assertInstanceOf(TreeBuilder::class, $treeBuilder);
     $this->assertEquals(['title' => 'title', 'description' => 'description', 'version' => '1.0.0', 'formats' => ['jsonld' => ['mime_types' => ['application/ld+json']], 'json' => ['mime_types' => ['application/json']], 'html' => ['mime_types' => ['text/html']]], 'error_formats' => ['jsonproblem' => ['mime_types' => ['application/problem+json']], 'jsonld' => ['mime_types' => ['application/ld+json']]], 'exception_to_status' => [ExceptionInterface::class => Response::HTTP_BAD_REQUEST, InvalidArgumentException::class => Response::HTTP_BAD_REQUEST], 'default_operation_path_resolver' => 'api_platform.operation_path_resolver.underscore', 'name_converter' => null, 'enable_fos_user' => false, 'enable_nelmio_api_doc' => false, 'enable_swagger' => true, 'enable_swagger_ui' => true, 'eager_loading' => ['enabled' => true, 'max_joins' => 30, 'force_eager' => true], 'collection' => ['order' => null, 'order_parameter_name' => 'order', 'pagination' => ['enabled' => true, 'client_enabled' => false, 'client_items_per_page' => false, 'items_per_page' => 30, 'page_parameter_name' => 'page', 'enabled_parameter_name' => 'pagination', 'items_per_page_parameter_name' => 'itemsPerPage', 'maximum_items_per_page' => null]]], $config);
 }