Skip to content

Commit c7f9baf

Browse files
committed
Merge branch '2.7' into 2.8
* 2.7: do not try to register incomplete definitions
2 parents 55da229 + 3e874dc commit c7f9baf

File tree

6 files changed

+80
-29
lines changed

6 files changed

+80
-29
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,14 @@ public function process(ContainerBuilder $container)
2727
return;
2828
}
2929

30-
// register the exception controller only if Twig is enabled
31-
if ($container->hasParameter('templating.engines')) {
30+
if (!interface_exists('Symfony\Component\Templating\TemplateReferenceInterface')) {
31+
$container->removeDefinition('twig.controller.exception');
32+
}
33+
34+
// register the exception controller only if Twig is enabled and required dependencies do exist
35+
if (!class_exists('Symfony\Component\Debug\Exception\FlattenException') || !interface_exists('Symfony\Component\EventDispatcher\EventSubscriberInterface')) {
36+
$container->removeDefinition('twig.exception_listener');
37+
} elseif ($container->hasParameter('templating.engines')) {
3238
$engines = $container->getParameter('templating.engines');
3339
if (!in_array('twig', $engines)) {
3440
$container->removeDefinition('twig.exception_listener');

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,25 @@ class ExtensionPass implements CompilerPassInterface
2323
{
2424
public function process(ContainerBuilder $container)
2525
{
26+
if (!class_exists('Symfony\Component\Asset\Packages')) {
27+
$container->removeDefinition('twig.extension.assets');
28+
}
29+
30+
if (!class_exists('Symfony\Component\ExpressionLanguage\Expression')) {
31+
$container->removeDefinition('twig.extension.expression');
32+
}
33+
34+
if (!interface_exists('Symfony\Component\Routing\Generator\UrlGeneratorInterface')) {
35+
$container->removeDefinition('twig.extension.routing');
36+
}
37+
if (!interface_exists('Symfony\Component\Translation\TranslatorInterface')) {
38+
$container->removeDefinition('twig.extension.trans');
39+
}
40+
41+
if (!class_exists('Symfony\Component\Yaml\Yaml')) {
42+
$container->removeDefinition('twig.extension.yaml');
43+
}
44+
2645
if ($container->has('form.extension')) {
2746
$container->getDefinition('twig.extension.form')->addTag('twig.extension');
2847
$reflClass = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension');

src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ public function load(array $configs, ContainerBuilder $container)
3737
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
3838
$loader->load('twig.xml');
3939

40+
if (class_exists('Symfony\Component\Form\Form')) {
41+
$loader->load('form.xml');
42+
}
43+
44+
if (interface_exists('Symfony\Component\Templating\EngineInterface')) {
45+
$loader->load('templating.xml');
46+
}
47+
48+
if (!interface_exists('Symfony\Component\Translation\TranslatorInterface')) {
49+
$container->removeDefinition('twig.translation.extractor');
50+
}
51+
4052
foreach ($configs as $key => $config) {
4153
if (isset($config['globals'])) {
4254
foreach ($config['globals'] as $name => $value) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
5+
6+
<services>
7+
<service id="twig.extension.form" class="%twig.extension.form.class%" public="false">
8+
<argument type="service" id="twig.form.renderer" />
9+
</service>
10+
11+
<service id="twig.form.engine" class="%twig.form.engine.class%" public="false">
12+
<argument>%twig.form.resources%</argument>
13+
</service>
14+
15+
<service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false">
16+
<argument type="service" id="twig.form.engine" />
17+
<argument type="service" id="security.csrf.token_manager" on-invalid="null" />
18+
</service>
19+
</services>
20+
</container>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
5+
6+
<services>
7+
<service id="twig.loader.filesystem" class="%twig.loader.filesystem.class%" public="false">
8+
<argument type="service" id="templating.locator" />
9+
<argument type="service" id="templating.name_parser" />
10+
<tag name="twig.loader"/>
11+
</service>
12+
13+
<service id="twig.loader" alias="twig.loader.filesystem" />
14+
15+
<service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false">
16+
<argument type="service" id="twig" />
17+
<argument type="service" id="templating.name_parser" />
18+
<argument type="service" id="templating.locator" />
19+
</service>
20+
</services>
21+
</container>

src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,8 @@
6868
<argument type="collection" />
6969
</service>
7070

71-
<service id="twig.loader.filesystem" class="%twig.loader.filesystem.class%" public="false">
72-
<argument type="service" id="templating.locator" />
73-
<argument type="service" id="templating.name_parser" />
74-
<tag name="twig.loader"/>
75-
</service>
76-
7771
<service id="twig.loader.chain" class="%twig.loader.chain.class%" public="false"/>
7872

79-
<service id="twig.loader" alias="twig.loader.filesystem" />
80-
81-
<service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false">
82-
<argument type="service" id="twig" />
83-
<argument type="service" id="templating.name_parser" />
84-
<argument type="service" id="templating.locator" />
85-
</service>
86-
8773
<service id="twig.extension.profiler" class="Symfony\Bridge\Twig\Extension\ProfilerExtension" public="false">
8874
<argument type="service" id="twig.profile" />
8975
<argument type="service" id="debug.stopwatch" on-invalid="null" />
@@ -143,21 +129,8 @@
143129
<argument type="service" id="router.request_context" on-invalid="ignore" />
144130
</service>
145131

146-
<service id="twig.extension.form" class="%twig.extension.form.class%" public="false">
147-
<argument type="service" id="twig.form.renderer" />
148-
</service>
149-
150132
<service id="twig.extension.debug" class="Twig_Extension_Debug" public="false" />
151133

152-
<service id="twig.form.engine" class="%twig.form.engine.class%" public="false">
153-
<argument>%twig.form.resources%</argument>
154-
</service>
155-
156-
<service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false">
157-
<argument type="service" id="twig.form.engine" />
158-
<argument type="service" id="security.csrf.token_manager" on-invalid="null" />
159-
</service>
160-
161134
<service id="twig.translation.extractor" class="%twig.translation.extractor.class%">
162135
<argument type="service" id="twig" />
163136
<tag name="translation.extractor" alias="twig" />

0 commit comments

Comments
 (0)