Sort of get config to work

This commit is contained in:
Brabli
2022-08-14 15:16:00 +01:00
parent 03b705cf5f
commit 8149b9494d
11 changed files with 111 additions and 33 deletions

View File

@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
namespace Pcm\IconBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder(): TreeBuilder
{
$treeBuilder = new TreeBuilder('pcm_icon');
$treeBuilder->getRootNode()
->children()
->arrayNode('directories')
->scalarPrototype()
->end()
->end()
->arrayNode('palletes')->variablePrototype()->end()
->end()
->end()
;
return $treeBuilder;
}
}

View File

@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace Pcm\IconBundle\DependencyInjection;
use Pcm\IconBundle\DependencyInjection\Configuration;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
class PcmIconExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container): void
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../../config'));
$loader->load('services.yaml');
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$definition = $container->getDefinition('pcm_icon.icon_extension');
$definition->replaceArgument('$directories', $config['directories']);
$definition->replaceArgument('$palletes', $config['palletes']);
dump($configs);
}
}

View File

@@ -4,16 +4,21 @@ declare(strict_types=1);
namespace Pcm\IconBundle;
use Symfony\Component\Config\FileLocator;
use Pcm\IconBundle\DependencyInjection\PcmIconExtension;
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
class PcmIconBundle extends AbstractBundle {
public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
class PcmIconBundle extends AbstractBundle
{
public function getContainerExtension(): ?ExtensionInterface
{
$loader = new YamlFileLoader($builder, new FileLocator(__DIR__.'/../config/'));
$loader->load('services.yml');
if (null === $this->extension) {
$this->extension = new PcmIconExtension();
}
return $this->extension;
}
}

View File

@@ -17,7 +17,9 @@ final class IconExtension extends AbstractExtension
'size' => self::DEFAULT_SIZE
];
public function __construct(private array $directories) {}
public function __construct(private array $directories, private array $palletes) {
dump($this->directories);
}
/**
* @inheritDoc