diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
index c14399c0c6504..936b9cf00dd8e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
@@ -99,7 +99,7 @@ public function getConfigTreeBuilder()
foreach ($v['templating']['packages'] as $name => $config) {
$v['assets']['packages'][$name] = array(
- 'version' => (string) $config['version'],
+ 'version' => null === $config['version'] ? null : (string) $config['version'],
'version_format' => $config['version_format'],
'base_path' => '',
'base_urls' => array_values(array_unique(array_merge($config['base_urls']['http'], $config['base_urls']['ssl']))),
@@ -488,7 +488,13 @@ private function addTemplatingSection(ArrayNodeDefinition $rootNode)
->prototype('array')
->fixXmlConfig('base_url')
->children()
- ->scalarNode('version')->defaultNull()->end()
+ ->scalarNode('version')
+ ->defaultNull()
+ ->beforeNormalization()
+ ->ifTrue(function ($v) { return '' === $v; })
+ ->then(function ($v) { return; })
+ ->end()
+ ->end()
->scalarNode('version_format')->defaultValue('%%s?%%s')->end()
->arrayNode('base_urls')
->performNoDeepMerging()
@@ -547,7 +553,12 @@ private function addAssetsSection(ArrayNodeDefinition $rootNode)
->prototype('array')
->fixXmlConfig('base_url')
->children()
- ->scalarNode('version')->defaultNull()->end()
+ ->scalarNode('version')
+ ->beforeNormalization()
+ ->ifTrue(function ($v) { return '' === $v; })
+ ->then(function ($v) { return; })
+ ->end()
+ ->end()
->scalarNode('version_format')->defaultNull()->end()
->scalarNode('base_path')->defaultValue('')->end()
->arrayNode('base_urls')
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 462a802a204fb..844bfa6f2669e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -589,7 +589,7 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
$namedPackages = array();
foreach ($config['packages'] as $name => $package) {
- if (null === $package['version']) {
+ if (!array_key_exists('version', $package)) {
$version = $defaultVersion;
} else {
$format = $package['version_format'] ?: $config['version_format'];
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/assets.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/assets.php
index e3532a7747cc6..1055251004bd9 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/assets.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/assets.php
@@ -20,6 +20,10 @@
'bar' => array(
'base_urls' => array('https://bar2.example.com'),
),
+ 'bar_null_version' => array(
+ 'version' => null,
+ 'base_urls' => array('https://bar3.example.com'),
+ ),
),
),
));
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/legacy_templating_assets.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/legacy_templating_assets.php
index 32bd56b3587d5..15df1015be15d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/legacy_templating_assets.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/legacy_templating_assets.php
@@ -18,6 +18,10 @@
'bar' => array(
'base_urls' => array('https://bar2.example.com'),
),
+ 'bar_null_version' => array(
+ 'version' => null,
+ 'base_urls' => array('https://bar3.example.com'),
+ ),
),
),
));
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/assets.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/assets.xml
index e39e15f900528..3e057d5b90254 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/assets.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/assets.xml
@@ -18,6 +18,9 @@
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: