diff --git a/DependencyInjection/Compiler/FormTwigTemplateCompilerPass.php b/DependencyInjection/Compiler/FormTwigTemplateCompilerPass.php index ba6a0076..58c4d80c 100644 --- a/DependencyInjection/Compiler/FormTwigTemplateCompilerPass.php +++ b/DependencyInjection/Compiler/FormTwigTemplateCompilerPass.php @@ -19,9 +19,6 @@ */ class FormTwigTemplateCompilerPass implements CompilerPassInterface { - private $telLayout = '@MisdPhoneNumber/Form/tel.html.twig'; - private $telBootstrapLayout = '@MisdPhoneNumber/Form/tel_bootstrap.html.twig'; - /** * {@inheritdoc} */ @@ -32,21 +29,27 @@ public function process(ContainerBuilder $container) } $parameter = $container->getParameter('twig.form.resources'); + $template = $container->getParameter('phone_number.template'); - if (in_array($this->telLayout, $parameter)) { + if (in_array($template, $parameter)) { return; } + // Insert right after base template if it exists. if (($key = array_search('bootstrap_3_horizontal_layout.html.twig', $parameter)) !== false) { - array_splice($parameter, ++$key, 0, array($this->telBootstrapLayout)); + array_splice($parameter, ++$key, 0, array($template)); } elseif (($key = array_search('bootstrap_3_layout.html.twig', $parameter)) !== false) { - array_splice($parameter, ++$key, 0, array($this->telBootstrapLayout)); + array_splice($parameter, ++$key, 0, array($template)); + } elseif (($key = array_search('bootstrap_4_layout.html.twig', $parameter)) !== false) { + array_splice($parameter, ++$key, 0, array($template)); + } elseif (($key = array_search('bootstrap_4_horizontal_layout.html.twig', $parameter)) !== false) { + array_splice($parameter, ++$key, 0, array($template)); } elseif (($key = array_search('form_div_layout.html.twig', $parameter)) !== false) { - array_splice($parameter, ++$key, 0, array($this->telLayout)); + array_splice($parameter, ++$key, 0, array($template)); } else { // Put it in first position. - array_unshift($parameter, array($this->telLayout)); + array_unshift($parameter, $template); } $container->setParameter('twig.form.resources', $parameter); diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php new file mode 100644 index 00000000..a65cc455 --- /dev/null +++ b/DependencyInjection/Configuration.php @@ -0,0 +1,37 @@ +root('misd_phone_number') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('template') + ->defaultValue('@MisdPhoneNumberBundle/Form/tel.html.twig') + ->end() + ->end(); + + return $builder; + } +} diff --git a/DependencyInjection/MisdPhoneNumberExtension.php b/DependencyInjection/MisdPhoneNumberExtension.php index b8feb8f5..73c217b4 100644 --- a/DependencyInjection/MisdPhoneNumberExtension.php +++ b/DependencyInjection/MisdPhoneNumberExtension.php @@ -11,6 +11,7 @@ namespace Misd\PhoneNumberBundle\DependencyInjection; +use Symfony\Component\Config\Definition\Processor; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -28,6 +29,8 @@ class MisdPhoneNumberExtension extends Extension */ public function load(array $configs, ContainerBuilder $container) { + $processor = new Processor(); + $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('services.xml'); @@ -36,6 +39,12 @@ public function load(array $configs, ContainerBuilder $container) $this->setFactory($container->getDefinition('libphonenumber.short_number_info')); $this->setFactory($container->getDefinition('libphonenumber.phone_number_to_carrier_mapper')); $this->setFactory($container->getDefinition('libphonenumber.phone_number_to_time_zones_mapper')); + + $configuration = new Configuration(); + $config = $processor->processConfiguration($configuration, $configs); + + $container->setParameter('phone_number.template', $config['template']); + } /**