<?php
namespace ProjectBiz\JsSelect2Bundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class ProjectBizJsSelect2Extension extends Extension implements PrependExtensionInterface
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
}
/**
* {@inheritDoc}
*/
public function prepend(ContainerBuilder $container)
{
$bundles = $container->getParameter('kernel.bundles');
$configs = $container->getExtensionConfig($this->getAlias());
$config = $this->processConfiguration(new Configuration(), $configs);
// Configure Assetic if AsseticBundle is activated and the option
// "project_biz_js_select2.auto_configure.assetic" is set to TRUE (default value).
if (true === isset($bundles['AsseticBundle']) && true === $config['auto_configure']['assetic']) {
$this->configureAsseticBundle($container, $config);
}
}
/**
* @param ContainerBuilder $container The service container
* @param array $config The bundle configuration
*
* @return void
*/
protected function configureAsseticBundle(ContainerBuilder $container, array $config)
{
foreach (array_keys($container->getExtensions()) as $name) {
switch ($name) {
case 'assetic':
$asseticConfig = new AsseticConfiguration;
$container->prependExtensionConfig(
$name,
array('assets' => $asseticConfig->build($config))
);
break;
}
}
}
}