KnpMenuExtension.php 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace Knp\Bundle\MenuBundle\DependencyInjection;
  3. use Symfony\Component\HttpKernel\DependencyInjection\Extension;
  4. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  5. use Symfony\Component\DependencyInjection\ContainerBuilder;
  6. use Symfony\Component\Config\FileLocator;
  7. class KnpMenuExtension extends Extension
  8. {
  9. /**
  10. * Handles the knp_menu configuration.
  11. *
  12. * @param array $configs The configurations being loaded
  13. * @param ContainerBuilder $container
  14. */
  15. public function load(array $configs, ContainerBuilder $container)
  16. {
  17. $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
  18. $loader->load('menu.xml');
  19. $configuration = new Configuration();
  20. $config = $this->processConfiguration($configuration, $configs);
  21. foreach ($config['providers'] as $builder => $enabled) {
  22. if ($enabled) {
  23. $container->getDefinition(sprintf('knp_menu.menu_provider.%s', $builder))->addTag('knp_menu.provider');
  24. }
  25. }
  26. if (isset($config['twig'])) {
  27. $loader->load('twig.xml');
  28. $container->setParameter('knp_menu.renderer.twig.template', $config['twig']['template']);
  29. }
  30. if ($config['templating']) {
  31. $loader->load('templating.xml');
  32. }
  33. $container->setParameter('knp_menu.default_renderer', $config['default_renderer']);
  34. }
  35. }