Exemplo n.º 1
0
 /**
  * Customizes the Container instance.
  *
  * @param \Symfony\Components\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag A ParameterBagInterface instance
  *
  * @return \Symfony\Components\DependencyInjection\ContainerBuilder A ContainerBuilder instance
  */
 public function buildContainer(ParameterBagInterface $parameterBag)
 {
     ContainerBuilder::registerExtension(new KernelExtension());
     $container = new ContainerBuilder();
     $loader = new XmlFileLoader($container, array(__DIR__ . '/../Resources/config', __DIR__ . '/Resources/config'));
     $loader->load('services.xml');
     if ($parameterBag->get('kernel.debug')) {
         $loader->load('debug.xml');
         $container->setDefinition('event_dispatcher', $container->findDefinition('debug.event_dispatcher'));
     }
     return $container;
 }
Exemplo n.º 2
0
 /**
  * Loads the i18n configuration.
  *
  * Usage example:
  *
  *      <zend:i18n locale="en" adapter="xliff" data="/path/to/messages.xml" />
  *
  * @param array $config An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function i18nLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('zend.i18n')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['i18n']);
         $container->setAlias('i18n', 'zend.i18n');
     }
     if (isset($config['locale'])) {
         $container->setParameter('zend.translator.locale', $config['locale']);
     }
     if (isset($config['adapter'])) {
         $container->setParameter('zend.translator.adapter', constant($config['adapter']));
     }
     if (isset($config['translations']) && is_array($config['translations'])) {
         foreach ($config['translations'] as $locale => $catalogue) {
             if ($locale == $container->getParameter('zend.translator.locale')) {
                 $container->setParameter('zend.translator.catalogue', $catalogue);
             }
             $container->findDefinition('zend.translator')->addMethodCall('addTranslation', array($catalogue, $locale));
         }
     }
 }
Exemplo n.º 3
0
 /**
  * Loads the templating configuration.
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function templatingLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('templating')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['templating']);
     }
     if (array_key_exists('escaping', $config)) {
         $container->setParameter('templating.output_escaper', $config['escaping']);
     }
     if (array_key_exists('assets_version', $config)) {
         $container->setParameter('templating.assets.version', $config['assets_version']);
     }
     // path for the filesystem loader
     if (isset($config['path'])) {
         $container->setParameter('templating.loader.filesystem.path', $config['path']);
     }
     // loaders
     if (isset($config['loader'])) {
         $loaders = array();
         $ids = is_array($config['loader']) ? $config['loader'] : array($config['loader']);
         foreach ($ids as $id) {
             $loaders[] = new Reference($id);
         }
         if (1 === count($loaders)) {
             $container->setAlias('templating.loader', (string) $loaders[0]);
         } else {
             $container->getDefinition('templating.loader.chain')->addArgument($loaders);
             $container->setAlias('templating.loader', 'templating.loader.chain');
         }
     }
     // cache?
     $container->setParameter('templating.loader.cache.path', null);
     if (isset($config['cache'])) {
         // wrap the loader with some cache
         $container->setDefinition('templating.loader.wrapped', $container->findDefinition('templating.loader'));
         $container->setDefinition('templating.loader', $container->getDefinition('templating.loader.cache'));
         $container->setParameter('templating.loader.cache.path', $config['cache']);
     }
 }
Exemplo n.º 4
0
 /**
  * Loads the Swift Mailer configuration.
  *
  * Usage example:
  *
  *      <swift:mailer transport="gmail" delivery_strategy="spool">
  *        <swift:username>fabien</swift:username>
  *        <swift:password>xxxxx</swift:password>
  *        <swift:spool path="/path/to/spool/" />
  *      </swift:mailer>
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function mailerLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('swiftmailer.mailer')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['mailer']);
         $container->setAlias('mailer', 'swiftmailer.mailer');
     }
     $r = new \ReflectionClass('Swift_Message');
     $container->setParameter('swiftmailer.base_dir', dirname(dirname(dirname($r->getFilename()))));
     $transport = $container->getParameter('swiftmailer.transport.name');
     if (array_key_exists('transport', $config)) {
         if (null === $config['transport']) {
             $transport = 'null';
         } elseif ('gmail' === $config['transport']) {
             $config['encryption'] = 'ssl';
             $config['auth_mode'] = 'login';
             $config['host'] = 'smtp.gmail.com';
             $transport = 'smtp';
         } else {
             $transport = $config['transport'];
         }
         $container->setParameter('swiftmailer.transport.name', $transport);
     }
     $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.' . $transport);
     if (isset($config['encryption']) && 'ssl' === $config['encryption'] && !isset($config['port'])) {
         $config['port'] = 465;
     }
     foreach (array('encryption', 'port', 'host', 'username', 'password', 'auth_mode') as $key) {
         if (isset($config[$key])) {
             $container->setParameter('swiftmailer.transport.' . $transport . '.' . $key, $config[$key]);
         }
     }
     // spool?
     if (isset($config['spool'])) {
         $type = isset($config['type']) ? $config['type'] : 'file';
         $container->setAlias('swiftmailer.transport.real', 'swiftmailer.transport.' . $transport);
         $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.spool');
         $container->setAlias('swiftmailer.spool', 'swiftmailer.spool.' . $type);
         foreach (array('path') as $key) {
             if (isset($config['spool'][$key])) {
                 $container->setParameter('swiftmailer.spool.' . $type . '.' . $key, $config['spool'][$key]);
             }
         }
     }
     if (isset($config['delivery_address'])) {
         $container->setParameter('swiftmailer.single_address', $config['delivery_address']);
         $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.redirecting')));
     }
     if (isset($config['disable_delivery']) && $config['disable_delivery']) {
         $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.blackhole')));
     }
 }
Exemplo n.º 5
0
 /**
  * @covers Symfony\Components\DependencyInjection\ContainerBuilder::findDefinition
  */
 public function testFindDefinition()
 {
     $container = new ContainerBuilder();
     $container->setDefinition('foo', $definition = new Definition('FooClass'));
     $container->setAlias('bar', 'foo');
     $container->setAlias('foobar', 'bar');
     $this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition');
 }