Skip to content

Commit 10c720c

Browse files
committed
made the old asset layer optional and disable it when using the new one
1 parent 27831ad commit 10c720c

File tree

5 files changed

+112
-62
lines changed

5 files changed

+112
-62
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 63 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,31 @@ public function load(array $configs, ContainerBuilder $container)
101101

102102
$this->registerSecurityCsrfConfiguration($config['csrf_protection'], $container, $loader);
103103

104+
$oldAssetsConfigured = false;
105+
if (
106+
isset($config['templating'])
107+
&&
108+
(
109+
count($config['templating']['packages'])
110+
||
111+
count($config['templating']['assets_base_urls']['http'])
112+
||
113+
count($config['templating']['assets_base_urls']['ssl'])
114+
)
115+
) {
116+
$oldAssetsConfigured = true;
117+
}
118+
119+
if (isset($config['assets']) && $oldAssetsConfigured) {
120+
throw new \LogicException('You cannot use the old asset configuration with the new one.');
121+
}
122+
104123
if (isset($config['assets'])) {
105124
$this->registerAssetsConfiguration($config['assets'], $container, $loader);
106125
}
107126

108127
if (isset($config['templating'])) {
109-
$this->registerTemplatingConfiguration($config['templating'], $config['ide'], $container, $loader);
128+
$this->registerTemplatingConfiguration($config['templating'], $config['ide'], $container, $loader, $oldAssetsConfigured);
110129
}
111130

112131
$this->registerValidationConfiguration($config['validation'], $container, $loader);
@@ -459,10 +478,9 @@ private function registerRequestConfiguration(array $config, ContainerBuilder $c
459478
* @param ContainerBuilder $container A ContainerBuilder instance
460479
* @param XmlFileLoader $loader An XmlFileLoader instance
461480
*/
462-
private function registerTemplatingConfiguration(array $config, $ide, ContainerBuilder $container, XmlFileLoader $loader)
481+
private function registerTemplatingConfiguration(array $config, $ide, ContainerBuilder $container, XmlFileLoader $loader, $oldAssetsConfigured)
463482
{
464483
$loader->load('templating.xml');
465-
$loader->load('templating_php.xml');
466484

467485
$links = array(
468486
'textmate' => 'txmt://open?url=file://%%f&line=%%l',
@@ -472,12 +490,23 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB
472490
);
473491

474492
$container->setParameter('templating.helper.code.file_link_format', isset($links[$ide]) ? $links[$ide] : $ide);
475-
$container->setParameter('templating.helper.form.resources', $config['form']['resources']);
476493
$container->setParameter('fragment.renderer.hinclude.global_template', $config['hinclude_default_template']);
477494

478-
if ($container->getParameter('kernel.debug')) {
479-
$loader->load('templating_debug.xml');
495+
if ($oldAssetsConfigured) {
496+
$loader->load('old_assets.xml');
497+
498+
// create package definitions and add them to the assets helper
499+
$defaultPackage = $this->createTemplatingPackageDefinition($container, $config['assets_base_urls']['http'], $config['assets_base_urls']['ssl'], $config['assets_version'], $config['assets_version_format']);
500+
$container->setDefinition('templating.asset.default_package', $defaultPackage);
501+
$namedPackages = array();
502+
foreach ($config['packages'] as $name => $package) {
503+
$namedPackage = $this->createTemplatingPackageDefinition($container, $package['base_urls']['http'], $package['base_urls']['ssl'], $package['version'], $package['version_format'], $name);
504+
$container->setDefinition('templating.asset.package.'.$name, $namedPackage);
505+
$namedPackages[$name] = new Reference('templating.asset.package.'.$name);
506+
}
507+
}
480508

509+
if ($container->getParameter('kernel.debug')) {
481510
$logger = new Reference('logger', ContainerInterface::IGNORE_ON_INVALID_REFERENCE);
482511

483512
$container->getDefinition('templating.loader.cache')
@@ -486,25 +515,8 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB
486515
$container->getDefinition('templating.loader.chain')
487516
->addTag('monolog.logger', array('channel' => 'templating'))
488517
->addMethodCall('setLogger', array($logger));
489-
490-
$container->setDefinition('templating.engine.php', $container->findDefinition('debug.templating.engine.php'));
491-
$container->setAlias('debug.templating.engine.php', 'templating.engine.php');
492518
}
493519

494-
// create package definitions and add them to the assets helper
495-
$defaultPackage = $this->createTemplatingPackageDefinition($container, $config['assets_base_urls']['http'], $config['assets_base_urls']['ssl'], $config['assets_version'], $config['assets_version_format']);
496-
$container->setDefinition('templating.asset.default_package', $defaultPackage);
497-
$namedPackages = array();
498-
foreach ($config['packages'] as $name => $package) {
499-
$namedPackage = $this->createTemplatingPackageDefinition($container, $package['base_urls']['http'], $package['base_urls']['ssl'], $package['version'], $package['version_format'], $name);
500-
$container->setDefinition('templating.asset.package.'.$name, $namedPackage);
501-
$namedPackages[$name] = new Reference('templating.asset.package.'.$name);
502-
}
503-
$container->getDefinition('templating.helper.assets')->setArguments(array(
504-
new Reference('templating.asset.default_package'),
505-
$namedPackages,
506-
));
507-
508520
if (!empty($config['loaders'])) {
509521
$loaders = array_map(function ($loader) { return new Reference($loader); }, $config['loaders']);
510522

@@ -534,14 +546,6 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB
534546
$container->findDefinition('templating.locator')->getClass(),
535547
));
536548

537-
if (in_array('php', $config['engines'], true)) {
538-
$this->addClassesToCompile(array(
539-
'Symfony\\Component\\Templating\\Storage\\FileStorage',
540-
'Symfony\\Bundle\\FrameworkBundle\\Templating\\PhpEngine',
541-
'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\FilesystemLoader',
542-
));
543-
}
544-
545549
$container->setParameter('templating.engines', $config['engines']);
546550
$engines = array_map(function ($engine) { return new Reference('templating.engine.'.$engine); }, $config['engines']);
547551

@@ -554,6 +558,33 @@ private function registerTemplatingConfiguration(array $config, $ide, ContainerB
554558
}
555559
$container->setAlias('templating', 'templating.engine.delegating');
556560
}
561+
562+
// configure the PHP engine if needed
563+
if (in_array('php', $config['engines'], true)) {
564+
$loader->load('templating_php.xml');
565+
566+
$container->setParameter('templating.helper.form.resources', $config['form']['resources']);
567+
568+
if ($container->getParameter('kernel.debug')) {
569+
$loader->load('templating_debug.xml');
570+
571+
$container->setDefinition('templating.engine.php', $container->findDefinition('debug.templating.engine.php'));
572+
$container->setAlias('debug.templating.engine.php', 'templating.engine.php');
573+
}
574+
575+
if ($oldAssetsConfigured) {
576+
$container->getDefinition('templating.helper.assets')->setArguments(array(
577+
new Reference('templating.asset.default_package'),
578+
$namedPackages,
579+
));
580+
}
581+
582+
$this->addClassesToCompile(array(
583+
'Symfony\\Component\\Templating\\Storage\\FileStorage',
584+
'Symfony\\Bundle\\FrameworkBundle\\Templating\\PhpEngine',
585+
'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\FilesystemLoader',
586+
));
587+
}
557588
}
558589

559590
/**
@@ -692,6 +723,7 @@ private function createPackageDefinition($basePath, array $baseUrls, $version, $
692723
}
693724

694725
$package = new DefinitionDecorator('assets.url_package');
726+
695727
return $package
696728
->setPublic(false)
697729
->replaceArgument(1, $baseUrls)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<parameters>
8+
<parameter key="templating.asset.path_package.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PathPackage</parameter>
9+
<parameter key="templating.asset.url_package.class">Symfony\Component\Templating\Asset\UrlPackage</parameter>
10+
<parameter key="templating.asset.package_factory.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PackageFactory</parameter>
11+
</parameters>
12+
13+
<services>
14+
<service id="templating.asset.path_package" class="%templating.asset.path_package.class%" abstract="true">
15+
<argument type="service" id="request" />
16+
<argument /> <!-- version -->
17+
<argument /> <!-- version format -->
18+
</service>
19+
20+
<service id="templating.asset.url_package" class="%templating.asset.url_package.class%" abstract="true">
21+
<argument /> <!-- base urls -->
22+
<argument /> <!-- version -->
23+
<argument /> <!-- version format -->
24+
</service>
25+
26+
<service id="templating.asset.request_aware_package" class="Symfony\Component\Templating\Asset\PackageInterface" abstract="true">
27+
<factory service="templating.asset.package_factory" method="getPackage" />
28+
<argument type="service" id="request" strict="false" />
29+
<argument /> <!-- HTTP id -->
30+
<argument /> <!-- SSL id -->
31+
</service>
32+
33+
<service id="templating.asset.package_factory" class="%templating.asset.package_factory.class%">
34+
<argument type="service" id="service_container" />
35+
</service>
36+
</services>
37+
</container>

src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<parameter key="templating.loader.cache.class">Symfony\Component\Templating\Loader\CacheLoader</parameter>
1515
<parameter key="templating.loader.chain.class">Symfony\Component\Templating\Loader\ChainLoader</parameter>
1616
<parameter key="templating.finder.class">Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder</parameter>
17+
<parameter key="templating.globals.class">Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables</parameter>
1718
</parameters>
1819

1920
<services>
@@ -58,5 +59,9 @@
5859
</service>
5960

6061
<service id="templating.loader" alias="templating.loader.filesystem" />
62+
63+
<service id="templating.globals" class="%templating.globals.class%">
64+
<argument type="service" id="service_container" />
65+
</service>
6166
</services>
6267
</container>

src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
<parameter key="templating.helper.stopwatch.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\StopwatchHelper</parameter>
1919
<parameter key="templating.form.engine.class">Symfony\Component\Form\Extension\Templating\TemplatingRendererEngine</parameter>
2020
<parameter key="templating.form.renderer.class">Symfony\Component\Form\FormRenderer</parameter>
21-
<parameter key="templating.globals.class">Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables</parameter>
22-
<parameter key="templating.asset.path_package.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PathPackage</parameter>
23-
<parameter key="templating.asset.url_package.class">Symfony\Component\Templating\Asset\UrlPackage</parameter>
24-
<parameter key="templating.asset.package_factory.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PackageFactory</parameter>
2521
</parameters>
2622

2723
<services>
@@ -43,29 +39,6 @@
4339
<argument type="collection" /> <!-- named packages -->
4440
</service>
4541

46-
<service id="templating.asset.path_package" class="%templating.asset.path_package.class%" abstract="true">
47-
<argument type="service" id="request" />
48-
<argument /> <!-- version -->
49-
<argument /> <!-- version format -->
50-
</service>
51-
52-
<service id="templating.asset.url_package" class="%templating.asset.url_package.class%" abstract="true">
53-
<argument /> <!-- base urls -->
54-
<argument /> <!-- version -->
55-
<argument /> <!-- version format -->
56-
</service>
57-
58-
<service id="templating.asset.request_aware_package" class="Symfony\Component\Templating\Asset\PackageInterface" abstract="true">
59-
<factory service="templating.asset.package_factory" method="getPackage" />
60-
<argument type="service" id="request" strict="false" />
61-
<argument /> <!-- HTTP id -->
62-
<argument /> <!-- SSL id -->
63-
</service>
64-
65-
<service id="templating.asset.package_factory" class="%templating.asset.package_factory.class%">
66-
<argument type="service" id="service_container" />
67-
</service>
68-
6942
<service id="templating.helper.request" class="%templating.helper.request.class%">
7043
<tag name="templating.helper" alias="request" />
7144
<argument type="service" id="request_stack" />
@@ -117,9 +90,5 @@
11790
<argument type="service" id="templating.form.engine" />
11891
<argument type="service" id="form.csrf_provider" on-invalid="null" />
11992
</service>
120-
121-
<service id="templating.globals" class="%templating.globals.class%">
122-
<argument type="service" id="service_container" />
123-
</service>
12493
</services>
12594
</container>

src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ public function process(ContainerBuilder $container)
4545

4646
if ($container->has('assets.packages')) {
4747
$container->getDefinition('twig.extension.assets')->addTag('twig.extension');
48+
} elseif ($container->has('templating.asset.packages')) {
49+
$container->getDefinition('twig.extension.assets')
50+
->setClass('Symfony\Bundle\TwigBundle\Extension\AssetsExtension')
51+
->replaceArgument(0, new Reference('service_container'))
52+
->replaceArgument(1, new Reference('router.request_context', ContainerInterface::NULL_ON_INVALID_REFERENCE))
53+
->addTag('twig.extension')
54+
;
4855
}
4956
}
5057
}

0 commit comments

Comments
 (0)
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