|
| 1 | +<?php |
| 2 | + |
| 3 | +namespace Symfony\Component\DependencyInjection\Loader\Configurator; |
| 4 | + |
| 5 | +use Psr\Container\ContainerInterface; |
| 6 | +use Symfony\Bridge\Twig\AppVariable; |
| 7 | +use Symfony\Bridge\Twig\DataCollector\TwigDataCollector; |
| 8 | +use Symfony\Bridge\Twig\ErrorRenderer\TwigErrorRenderer; |
| 9 | +use Symfony\Bridge\Twig\Extension\AssetExtension; |
| 10 | +use Symfony\Bridge\Twig\Extension\CodeExtension; |
| 11 | +use Symfony\Bridge\Twig\Extension\ExpressionExtension; |
| 12 | +use Symfony\Bridge\Twig\Extension\HttpFoundationExtension; |
| 13 | +use Symfony\Bridge\Twig\Extension\HttpKernelExtension; |
| 14 | +use Symfony\Bridge\Twig\Extension\HttpKernelRuntime; |
| 15 | +use Symfony\Bridge\Twig\Extension\ProfilerExtension; |
| 16 | +use Symfony\Bridge\Twig\Extension\RoutingExtension; |
| 17 | +use Symfony\Bridge\Twig\Extension\StopwatchExtension; |
| 18 | +use Symfony\Bridge\Twig\Extension\TranslationExtension; |
| 19 | +use Symfony\Bridge\Twig\Extension\WebLinkExtension; |
| 20 | +use Symfony\Bridge\Twig\Extension\WorkflowExtension; |
| 21 | +use Symfony\Bridge\Twig\Extension\YamlExtension; |
| 22 | +use Symfony\Bridge\Twig\Translation\TwigExtractor; |
| 23 | +use Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer; |
| 24 | +use Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator; |
| 25 | +use Symfony\Bundle\TwigBundle\TemplateIterator; |
| 26 | +use Twig\Cache\FilesystemCache; |
| 27 | +use Twig\Environment; |
| 28 | +use Twig\Extension\CoreExtension; |
| 29 | +use Twig\Extension\DebugExtension; |
| 30 | +use Twig\Extension\EscaperExtension; |
| 31 | +use Twig\Extension\OptimizerExtension; |
| 32 | +use Twig\Extension\StagingExtension; |
| 33 | +use Twig\ExtensionSet; |
| 34 | +use Twig\Loader\ChainLoader; |
| 35 | +use Twig\Loader\FilesystemLoader; |
| 36 | +use Twig\Profiler\Profile; |
| 37 | +use Twig\RuntimeLoader\ContainerRuntimeLoader; |
| 38 | +use Twig\Template; |
| 39 | +use Twig\TemplateWrapper; |
| 40 | + |
| 41 | +return static function (ContainerConfigurator $container) { |
| 42 | + $container->services() |
| 43 | + |
| 44 | + ->set('twig', Environment::class) |
| 45 | + ->public() |
| 46 | + ->args([ref('twig.loader'), abstract_arg('Twig options')]) |
| 47 | + ->call('addGlobal', ['app', ref('twig.app_variable')]) |
| 48 | + ->call('addRuntimeLoader', [ref('twig.runtime_loader')]) |
| 49 | + ->configurator([ref('twig.configurator.environment'), 'configure']) |
| 50 | + ->tag('container.preload', ['class' => FilesystemCache::class]) |
| 51 | + ->tag('container.preload', ['class' => CoreExtension::class]) |
| 52 | + ->tag('container.preload', ['class' => EscaperExtension::class]) |
| 53 | + ->tag('container.preload', ['class' => OptimizerExtension::class]) |
| 54 | + ->tag('container.preload', ['class' => StagingExtension::class]) |
| 55 | + ->tag('container.preload', ['class' => ExtensionSet::class]) |
| 56 | + ->tag('container.preload', ['class' => Template::class]) |
| 57 | + ->tag('container.preload', ['
F42D
;class' => TemplateWrapper::class]) |
| 58 | + |
| 59 | + ->alias('Twig_Environment', 'twig') |
| 60 | + ->alias(Environment::class, 'twig') |
| 61 | + |
| 62 | + ->set('twig.app_variable', AppVariable::class) |
| 63 | + ->call('setEnvironment', [param('kernel.environment')]) |
| 64 | + ->call('setDebug', [param('kernel.debug')]) |
| 65 | + ->call('setTokenStorage', [ref('security.token_storage')->ignoreOnInvalid()]) |
| 66 | + ->call('setRequestStack', [ref('request_stack')->ignoreOnInvalid()]) |
| 67 | + |
| 68 | + ->set('twig.template_iterator', TemplateIterator::class) |
| 69 | + ->args([ref('kernel'), abstract_arg('Twig paths'), param('twig.default_path')]) |
| 70 | + |
| 71 | + ->set('twig.template_cache_warmer', TemplateCacheWarmer::class) |
| 72 | + ->args([ref(ContainerInterface::class, ref('twig.template_iterator')]) |
| 73 | + ->tag('kernel.cache_warmer') |
| 74 | + ->tag('container.service_subscriber', ['id' => 'twig']) |
| 75 | + |
| 76 | + ->set('twig.loader.native_filesystem', FilesystemLoader::class) |
| 77 | + ->args([[], param('kernel.project_dir')]) |
| 78 | + ->tag('twig.loader') |
| 79 | + |
| 80 | + ->set('twig.loader.chain', ChainLoader::class) |
| 81 | + |
| 82 | + ->set('twig.extension.profiler', ProfilerExtension::class) |
| 83 | + ->args([ref('twig.profile'), ref('debug.stopwatch')->ignoreOnInvalid()]) |
| 84 | + |
| 85 | + ->set('twig.profile', Profile::class) |
| 86 | + |
| 87 | + ->set('data_collector.twig', TwigDataCollector::class) |
| 88 | + ->args([ref('twig.profile'), ref('twig')]) |
| 89 | + ->tag('data_collector', ['template' => '@WebProfiler/Collector/twig.html.twig', 'id' => 'twig', 'priority' => 257]) |
| 90 | + |
| 91 | + ->set('twig.extension.trans', TranslationExtension::class) |
| 92 | + ->args([ref('translation')->nullOnInvalid()]) |
| 93 | + ->tag('twig.extension') |
| 94 | + |
| 95 | + ->set('twig.extension.assets', AssetExtension::class) |
| 96 | + ->args([ref('assets.package')]) |
| 97 | + |
| 98 | + ->set('twig.extension.code', CodeExtension::class) |
| 99 | + ->args([ref('debug.file_link_formatter')->ignoreOnInvalid(), param('kernel.project_dir'), param('kernel.charset')]) |
| 100 | + ->tag('twig.extension') |
| 101 | + |
| 102 | + ->set('twig.extension.routing', RoutingExtension::class) |
| 103 | + ->args([ref('router')]) |
| 104 | + |
| 105 | + ->set('twig.extension.yaml', YamlExtension::class) |
| 106 | + |
| 107 | + ->set('twig.extension.debug.stopwatch', StopwatchExtension::class) |
| 108 | + ->args([ref('debug.stopwatch')->ignoreOnInvalid(), param('kernel.debug')]) |
| 109 | + |
| 110 | + ->set('twig.extension.expression', ExpressionExtension::class) |
| 111 | + |
| 112 | + ->set('twig.extension.httpkernel', HttpKernelExtension::class) |
| 113 | + |
| 114 | + ->set('twig.runtime.httpkernel', HttpKernelRuntime::class) |
| 115 | + ->args([ref('fragment.handler')]) |
| 116 | + |
| 117 | + ->set('twig.extension.httpfoundation', HttpFoundationExtension::class) |
| 118 | + ->args([ref('url_helper')]) |
| 119 | + |
| 120 | + ->set('twig.extension.debug', DebugExtension::class) |
| 121 | + |
| 122 | + ->set('twig.extension.weblink', WebLinkExtension::class) |
| 123 | + ->args([ref('request_stack')]) |
| 124 | + |
| 125 | + ->set('twig.translation.extractor', TwigExtractor::class) |
| 126 | + ->args([ref('twig')]) |
| 127 | + ->tag('translation.extractor', ['alias' => 'twig']) |
| 128 | + |
| 129 | + ->set('workflow.twig_extension', WorkflowExtension::class) |
| 130 | + ->args([ref('workflow.registry')]) |
| 131 | + |
| 132 | + ->set('twig.configurator.environment', EnvironmentConfigurator::class) |
| 133 | + ->args([ |
| 134 | + abstract_arg('date format, set in TwigExtension'), |
| 135 | + abstract_arg('interval format, set in TwigExtension'), |
| 136 | + abstract_arg('timezone, set in TwigExtension'), |
| 137 | + abstract_arg('decimals, set in TwigExtension'), |
| 138 | + abstract_arg('decimal point, set in TwigExtension'), |
| 139 | + abstract_arg('thousands separator, set in TwigExtension'), |
| 140 | + ]) |
| 141 | + |
| 142 | + ->set('twig.runtime_loader', ContainerRuntimeLoader::class) |
| 143 | + ->args([abstract_arg('runtime locator')]) |
| 144 | + |
| 145 | + ->set('twig.error_renderer.html', TwigErrorRenderer::class) |
| 146 | + ->decorate('error_renderer.html') |
| 147 | + ->args([ |
| 148 | + ref('twig'), |
| 149 | + ref('twig.error_renderer.html.inner'), |
| 150 | + service(TwigErrorRenderer::class) |
| 151 | + ->factory([TwigErrorRenderer::class, 'isDebug']) |
| 152 | + ->args([ref('request_stack'), param('kernel.debug')]), |
| 153 | + ]) |
| 154 | + |
| 155 | + ; |
| 156 | +}; |
0 commit comments