Example #1
0
 public function load(array $configs, ContainerBuilder $container)
 {
     $processor = new Processor();
     $configuration = new Configuration();
     $config = $processor->process($configuration->getConfigTree(), $configs);
     // Validate persistence driver
     $db_driver = $config['db_driver'];
     if (!in_array($db_driver, array('odm', 'orm', 'custom'))) {
         throw new \InvalidArgumentException('Invalid DB driver for ABBundle, check "ab.db_driver" configuration.');
     }
     // Service class names
     foreach ($configuration->getDefaultServiceClasses() as $name => $value) {
         if (!$container->hasParameter($name)) {
             $container->setParameter($name, $value);
         }
     }
     // Config = YAML files (yep, I hate XML and it won't change now :P)
     $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     // Load db_driver's configuration
     if ($db_driver != 'custom') {
         $loader->load(sprintf('ab-db_driver-%s.yml', $config['db_driver']));
     }
     // Eventually override some parameters from driver's config
     foreach ($configuration->getParameterNames() as $name) {
         if (isset($config[$name]) && !empty($config[$name])) {
             $container->setParameter('ab.' . $name, $config[$name]);
         }
     }
     // Persistence service
     if ($container->hasParameter('ab.persistence_service')) {
         $container->setAlias('ab.persistence_service', $container->getParameter('ab.persistence_service'));
     }
     if ($db_driver != 'custom') {
         $loader->load('manager.yml');
     }
     // Session service
     $loader->load('session.yml');
     // A/B service
     $loader->load('service.yml');
     // Twig extension
     if (is_null($config['load_twig_extension']) || $config['load_twig_extension']) {
         $loader->load('twig.yml');
     }
 }