From cec37fdd6292948bbb08fc6a6ee7a6a610a9a19a Mon Sep 17 00:00:00 2001 From: Ivan Borzenkov Date: Fri, 23 May 2014 11:52:11 +0400 Subject: [PATCH 1/2] bundle package --- .../FrameworkExtension.php | 17 +++++++++++++ .../Resources/config/templating_php.xml | 8 ++++++ .../Templating/Asset/BundlePackage.php | 25 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Templating/Asset/BundlePackage.php 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); + } + +} From 426e81edc8c8a8c4dc208179840005c9ae7ad199 Mon Sep 17 00:00:00 2001 From: Ivan Borzenkov Date: Sun, 25 May 2014 11:13:04 +0400 Subject: [PATCH 2/2] fix tests If every bundle generate package whis request this test need change --- .../Tests/DependencyInjection/FrameworkExtensionTest.php | 7 ------- 1 file changed, 7 deletions(-) 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');