diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 15e0801fb9cdb..6c54f1c906660 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -454,6 +454,11 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB $container->setDefinition('templating.asset.package.'.$name, $namedPackage); $namedPackages[$name] = new Reference('templating.asset.package.'.$name); } + foreach ($container->getParameter('kernel.bundles') as $bundle => $class) { + $bundlePackage = $this->createPackageDefinition($container, $config['assets_base_urls']['http'], $config['assets_base_urls']['ssl'], $config['assets_version'], $config['assets_version_format'], 'bundle.'.$bundle); + $container->setDefinition('templating.asset.package.bundle.'.$bundle, $bundlePackage); + $namedPackages[$bundle] = new Reference('templating.asset.package.bundle.'.$bundle); + } $container->getDefinition('templating.helper.assets')->setArguments(array( new Reference('templating.asset.default_package'), $namedPackages, @@ -528,6 +533,18 @@ function ($v, Reference $ref) use ($container) { */ private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $version, $format, $name = null) { + if (strpos($name, 'bundle.') === 0) { + $package = new DefinitionDecorator('templating.asset.bundle_package'); + $package + ->setPublic(false) + ->setScope('request') + ->replaceArgument(1, substr($name, 7)) + ->replaceArgument(2, $version) + ->replaceArgument(3, $format) + ; + + return $package; + } if (!$httpUrls) { $package = new DefinitionDecorator('templating.asset.path_package'); $package diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml index 0ebb44bbd2708..0ade03f56d05d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml @@ -20,6 +20,7 @@ Symfony\Component\Form\FormRenderer Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables Symfony\Bundle\FrameworkBundle\Templating\Asset\PathPackage + Symfony\Bundle\FrameworkBundle\Templating\Asset\BundlePackage Symfony\Component\Templating\Asset\UrlPackage Symfony\Bundle\FrameworkBundle\Templating\Asset\PackageFactory @@ -49,6 +50,13 @@ + + + + + + + diff --git a/src/Symfony/Bundle/FrameworkBundle/Templating/Asset/BundlePackage.php b/src/Symfony/Bundle/FrameworkBundle/Templating/Asset/BundlePackage.php new file mode 100644 index 0000000000000..e401ef6641d5c --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Templating/Asset/BundlePackage.php @@ -0,0 +1,25 @@ +bundleDir = 'bundles/' . strtolower(str_replace('Bundle', '', $bundleName)); + } + + public function getUrl($path, $version = null) + { + if (isset($this->bundleDir)) + $path = $this->bundleDir . '/' . ltrim($path, '/'); + + return parent::getUrl($path, $version); + } + +} diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index 7bed3b042ce0b..35ccae328c594 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -200,13 +200,6 @@ public function testTemplating() $this->assertEquals(array('FrameworkBundle:Form', 'theme1', 'theme2'), $container->getParameter('templating.helper.form.resources'), '->registerTemplatingConfiguration() registers the theme and adds the base theme'); } - public function testTemplatingAssetsHelperScopeDependsOnPackageArgumentScopes() - { - $container = $this->createContainerFromFile('templating_url_package'); - - $this->assertNotEquals('request', $container->getDefinition('templating.helper.assets')->getScope(), '->registerTemplatingConfiguration() does not set request scope on assets helper if no packages are request-scoped'); - } - public function testTranslator() { $container = $this->createContainerFromFile('full'); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy