feature #23272 [FrameworkBundle] disable unusable fragment renderers (xabbuh)
This PR was merged into the 3.4 branch.
Discussion
----------
[FrameworkBundle] disable unusable fragment renderers
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #21733
| License | MIT
| Doc PR |
Commits
-------
2b3d7f021d
disable unusable fragment renderers
This commit is contained in:
commit
98be08bb6c
@ -392,6 +392,8 @@ class FrameworkExtension extends Extension
|
||||
private function registerEsiConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||
{
|
||||
if (!$this->isConfigEnabled($container, $config)) {
|
||||
$container->removeDefinition('fragment.renderer.esi');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -408,6 +410,8 @@ class FrameworkExtension extends Extension
|
||||
private function registerSsiConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||
{
|
||||
if (!$this->isConfigEnabled($container, $config)) {
|
||||
$container->removeDefinition('fragment.renderer.ssi');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -424,6 +428,8 @@ class FrameworkExtension extends Extension
|
||||
private function registerFragmentsConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||
{
|
||||
if (!$this->isConfigEnabled($container, $config)) {
|
||||
$container->removeDefinition('fragment.renderer.hinclude');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
$container->loadFromExtension('framework', array(
|
||||
'fragments' => array(
|
||||
'enabled' => false,
|
||||
),
|
||||
'esi' => array(
|
||||
'enabled' => true,
|
||||
),
|
||||
'ssi' => array(
|
||||
'enabled' => true,
|
||||
),
|
||||
));
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$container->loadFromExtension('framework', array(
|
||||
'esi' => array(
|
||||
'enabled' => false,
|
||||
),
|
||||
));
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$container->loadFromExtension('framework', array(
|
||||
'ssi' => array(
|
||||
'enabled' => false,
|
||||
),
|
||||
));
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" ?>
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||
|
||||
<framework:config>
|
||||
<framework:fragments enabled="false" />
|
||||
<framework:esi enabled="true" />
|
||||
<framework:ssi enabled="true" />
|
||||
</framework:config>
|
||||
</container>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" ?>
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||
|
||||
<framework:config>
|
||||
<framework:esi enabled="false" />
|
||||
</framework:config>
|
||||
</container>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" ?>
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||
|
||||
<framework:config>
|
||||
<framework:ssi enabled="false" />
|
||||
</framework:config>
|
||||
</container>
|
@ -0,0 +1,7 @@
|
||||
framework:
|
||||
fragments:
|
||||
enabled: false
|
||||
esi:
|
||||
enabled: true
|
||||
ssi:
|
||||
enabled: true
|
@ -0,0 +1,3 @@
|
||||
framework:
|
||||
esi:
|
||||
enabled: false
|
@ -0,0 +1,3 @@
|
||||
framework:
|
||||
ssi:
|
||||
enabled: false
|
@ -132,6 +132,14 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$container = $this->createContainerFromFile('full');
|
||||
|
||||
$this->assertTrue($container->hasDefinition('esi'), '->registerEsiConfiguration() loads esi.xml');
|
||||
$this->assertTrue($container->hasDefinition('fragment.renderer.esi'), 'The ESI fragment renderer is registered');
|
||||
}
|
||||
|
||||
public function testEsiDisabled()
|
||||
{
|
||||
$container = $this->createContainerFromFile('esi_disabled');
|
||||
|
||||
$this->assertFalse($container->hasDefinition('fragment.renderer.esi'), 'The ESI fragment renderer is not registered');
|
||||
}
|
||||
|
||||
public function testSsi()
|
||||
@ -139,6 +147,23 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$container = $this->createContainerFromFile('full');
|
||||
|
||||
$this->assertTrue($container->hasDefinition('ssi'), '->registerSsiConfiguration() loads ssi.xml');
|
||||
$this->assertTrue($container->hasDefinition('fragment.renderer.ssi'), 'The SSI fragment renderer is registered');
|
||||
}
|
||||
|
||||
public function testSsiDisabled()
|
||||
{
|
||||
$container = $this->createContainerFromFile('ssi_disabled');
|
||||
|
||||
$this->assertFalse($container->hasDefinition('fragment.renderer.ssi'), 'The SSI fragment renderer is not registered');
|
||||
}
|
||||
|
||||
public function testEsiAndSsiWithoutFragments()
|
||||
{
|
||||
$container = $this->createContainerFromFile('esi_and_ssi_without_fragments');
|
||||
|
||||
$this->assertFalse($container->hasDefinition('fragment.renderer.hinclude'), 'The HInclude fragment renderer is not registered');
|
||||
$this->assertTrue($container->hasDefinition('fragment.renderer.esi'), 'The ESI fragment renderer is registered');
|
||||
$this->assertTrue($container->hasDefinition('fragment.renderer.ssi'), 'The SSI fragment renderer is registered');
|
||||
}
|
||||
|
||||
public function testEnabledProfiler()
|
||||
|
@ -61,10 +61,7 @@ class ExtensionPass implements CompilerPassInterface
|
||||
$container->getDefinition('twig.extension.httpkernel')->addTag('twig.extension');
|
||||
|
||||
// inject Twig in the hinclude service if Twig is the only registered templating engine
|
||||
if (
|
||||
!$container->hasParameter('templating.engines')
|
||||
|| array('twig') == $container->getParameter('templating.engines')
|
||||
) {
|
||||
if ((!$container->hasParameter('templating.engines') || array('twig') == $container->getParameter('templating.engines')) && $container->hasDefinition('fragment.renderer.hinclude')) {
|
||||
$container->getDefinition('fragment.renderer.hinclude')
|
||||
->addTag('kernel.fragment_renderer', array('alias' => 'hinclude'))
|
||||
->replaceArgument(0, new Reference('twig'))
|
||||
|
Reference in New Issue
Block a user