8000 do not try to register incomplete definitions · symfony/symfony@90d64a6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 90d64a6

Browse files
committed
do not try to register incomplete definitions
1 parent e59ae4d commit 90d64a6

File tree

4 files changed

+94
-32
lines changed

4 files changed

+94
-32
lines changed

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

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

39+
if (class_exists('Symfony\Component\Form\Form')) {
40+
$loader->load('form.xml');
41+
}
42+
43+
if (interface_exists('Symfony\Component\Templating\EngineInterface')) {
44+
$loader->load('templating.xml');
45+
}
46+
47+
$this->cleanUpDefinitionsMissingRequiredDependencies($container);
48+
3949
foreach ($configs as $key => $config) {
4050
if (isset($config['globals'])) {
4151
foreach ($config['globals'] as $name => $value) {
@@ -151,4 +161,36 @@ public function getNamespace()
151161
{
152162
return 'http://symfony.com/schema/dic/twig';
153163
}
164+
165+
private function cleanUpDefinitionsMissingRequiredDependencies(ContainerBuilder $container)
166+
{
167+
if (!interface_exists('Symfony\Component\Templating\TemplateReferenceInterface')) {
168+
$container->removeDefinition('twig.controller.exception');
169+
}
170+
171+
if (!class_exists('Symfony\Component\Debug\Exception\FlattenException') || !interface_exists('Symfony\Component\EventDispatcher\EventSubscriberInterface')) {
172+
$container->removeDefinition('twig.exception_listener');
173+
}
174+
175+
if (!class_exists('Symfony\Component\Asset\Packages')) {
176+
$container->removeDefinition('twig.extension.assets');
177+
}
178+
179+
if (!class_exists('Symfony\Component\ExpressionLanguage\Expression')) {
180+
$container->removeDefinition('twig.extension.expression');
181+
}
182+
183+
if (!interface_exists('Symfony\Component\Routing\Generator\UrlGeneratorInterface')) {
184+
$container->removeDefinition('twig.extension.routing');
185+
}
186+
187+
if (!interface_exists('Symfony\Component\Translation\TranslatorInterface')) {
188+
$container->removeDefinition('twig.extension.trans');
189+
$container->removeDefinition('twig.translation.extractor');
190+
}
191+
192+
if (!class_exists('Symfony\Component\Yaml\Yaml')) {
193+
$container->removeDefinition('twig.extension.yaml');
194+
}
195+
}
154196
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
<parameters>
7+
<parameter key="twig.extension.form.class">Symfony\Bridge\Twig\Extension\FormExtension</parameter>
8+
<parameter key="twig.form.engine.class">Symfony\Bridge\Twig\Form\TwigRendererEngine</parameter>
9+
<parameter key="twig.form.renderer.class">Symfony\Bridge\Twig\Form\TwigRenderer</parameter>
10+
</parameters>
11+
12+
<services>
13+
<service id="twig.extension.form" class="%twig.extension.form.class%" public="false">
14+
<argument type="service" id="twig.form.renderer" />
15+
</service>
16+
17+
<service id="twig.form.engine" class="%twig.form.engine.class%" public="false">
18+
<argument>%twig.form.resources%</argument>
19+
</service>
20+
21+
<service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false">
22+
<argument type="service" id="twig.form.engine" />
23+
<argument type="service" id="security.csrf.token_manager" on-invalid="null" />
24+
</service>
25+
</services>
26+
</container>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
<parameters>
7+
<parameter key="twig.loader.filesystem.class">Symfony\Bundle\TwigBundle\Loader\FilesystemLoader</parameter>
8+
<parameter key="templating.engine.twig.class">Symfony\Bundle\TwigBundle\TwigEngine</parameter>
9+
</parameters>
10+
11+
<services>
12+
<service id="twig.loader.filesystem" class="%twig.loader.filesystem.class%" public="false">
13+
<argument type="service" id="templating.locator" />
14+
<argument type="service" id="templating.name_parser" />
15+
<tag name="twig.loader"/>
16+
</service>
17+
18+
<service id="twig.loader" alias="twig.loader.filesystem" />
19+
20+
<service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false">
21+
<argument type="service" id="twig" />
22+
<argument type="service" id="templating.name_parser" />
23+
<argument type="service" id="templating.locator" />
24+
</service>
25+
</services>
26+
</container>

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

Lines changed: 0 additions & 32 deletions
10560
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,16 @@
66

77
<parameters>
88
<parameter key="twig.class">Twig_Environment</parameter>
9-
<parameter key="twig.loader.filesystem.class">Symfony\Bundle\TwigBundle\Loader\FilesystemLoader</parameter>
109
<parameter key="twig.loader.chain.class">Twig_Loader_Chain</parameter>
11-
<parameter key="templating.engine.twig.class">Symfony\Bundle\TwigBundle\TwigEngine</parameter>
1210
<parameter key="twig.cache_warmer.class">Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer</parameter>
1311
<parameter key="twig.extension.trans.class">Symfony\Bridge\Twig\Extension\TranslationExtension</parameter>
1412
<parameter key="twig.extension.actions.class">Symfony\Bundle\TwigBundle\Extension\ActionsExtension</parameter>
1513
<parameter key="twig.extension.code.class">Symfony\Bridge\Twig\Extension\CodeExtension</parameter>
1614
<parameter key="twig.extension.routing.class">Symfony\Bridge\Twig\Extension\RoutingExtension</parameter>
1715
<parameter key="twig.extension.yaml.class">Symfony\Bridge\Twig\Extension\YamlExtension</parameter>
18-
<parameter key="twig.extension.form.class">Symfony\Bridge\Twig\Extension\FormExtension</parameter>
1916
<parameter key="twig.extension.httpkernel.class">Symfony\Bridge\Twig\Extension\HttpKernelExtension</parameter>
2017
<parameter key="twig.extension.debug.stopwatch.class">Symfony\Bridge\Twig\Extension\StopwatchExtension</parameter>
2118
<parameter key="twig.extension.expression.class">Symfony\Bridge\Twig\Extension\ExpressionExtension</parameter>
22-
<parameter key="twig.form.engine.class">Symfony\Bridge\Twig\Form\TwigRendererEngine</parameter>
23-
<parameter key="twig.form.renderer.class">Symfony\Bridge\Twig\Form\TwigRenderer</parameter>
2419
<parameter key="twig.translation.extractor.class">Symfony\Bridge\Twig\Translation\TwigExtractor</parameter>
2520
<parameter key="twig.exception_listener.class">Symfony\Component\HttpKernel\EventListener\ExceptionListener</parameter>
2621
<parameter key="twig.controller.exception.class">Symfony\Bundle\TwigBundle\Controller\ExceptionController</parameter>
@@ -55,22 +50,8 @@
5550
<argument type="collection" />
5651
</service>
5752

58-
<service id="twig.loader.filesystem" class="%twig.loader.filesystem.class%" public="false">
59-
<argument type="service" id="templating.locator" />
60-
<argument type="service" id="templating.name_parser" />
61-
<tag name="twig.loader"/>
62-
</service>
63-
6453
<service id="twig.loader.chain" class="%twig.loader.chain.class%" public="false"/>
6554

66-
<service id="twig.loader" alias="twig.loader.filesystem" />
67-
68-
<service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false">
69-
<argument type="service" id="twig" />
70-
<argument type="service" id="templating.name_parser" />
71-
<argument type="service" id="templating.locator" />
72-
</service>
73-
7455
<service id="twig.extension.profiler" class="Symfony\Bridge\Twig\Extension\ProfilerExtension" public="false">
7556
<argument type="service" id="twig.profile" />
7657
<argument type="service" id="debug.stopwatch" on-invalid="null" />
@@ -130,21 +111,8 @@
130111
<argument type="service" id="router.request_context" on-invalid="ignore" />
131112
</service>
132113

133-
<service id="twig.extension.form" class="%twig.extension.form.class%" public="false">
134-
<argument type="service" id="twig.form.renderer" />
135-
</service>
136-
137114
<service id="twig.extension.debug" class="Twig_Extension_Debug" public="false" />
138115

139-
<service id="twig.form.engine" class="%twig.form.engine.class%" public="false">
140-
<argument>%twig.form.resources%</argument>
141-
</service>
142-
143-
<service id="twig.form.renderer" class="%twig.form.renderer.class%" public="false">
144-
<argument type="service" id="twig.form.engine" />
145-
<argument type="service" id="security.csrf.token_manager" on-invalid="null" />
146-
</service>
147-
148116
<service id="twig.translation.extractor" class="%twig.translation.extractor.class%">
149117
<argument type="service" id="twig" />
150118
<tag name="translation.extractor" alias="twig" />

0 commit comments

Comments
 (0)
0