Fix compatibility with Symfony 8

This commit is contained in:
Nicolas Grekas
2025-07-10 11:59:09 +02:00
parent 7f908ba1f4
commit b6a105c952
3 changed files with 67 additions and 13 deletions
@@ -15,12 +15,31 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
class MissingExtensionSuggestorPass implements CompilerPassInterface
{
/** @return void */
public function process(ContainerBuilder $container)
if (!method_exists(ContainerBuilder::class, 'getAutoconfiguredAttributes')) {
class MissingExtensionSuggestorPass implements CompilerPassInterface
{
if ($container->getParameter('kernel.debug')) {
public function process(ContainerBuilder $container): void
{
if (!$container->getParameter('kernel.debug')) {
return;
}
$twigDefinition = $container->getDefinition('twig');
$twigDefinition
->addMethodCall('registerUndefinedFilterCallback', [[new Reference('twig.missing_extension_suggestor'), 'suggestFilter']])
->addMethodCall('registerUndefinedFunctionCallback', [[new Reference('twig.missing_extension_suggestor'), 'suggestFunction']])
->addMethodCall('registerUndefinedTokenParserCallback', [[new Reference('twig.missing_extension_suggestor'), 'suggestTag']])
;
}
}
} else {
class MissingExtensionSuggestorPass implements CompilerPassInterface
{
/** @return void */
public function process(ContainerBuilder $container)
{
if (!$container->getParameter('kernel.debug')) {
return;
}
$twigDefinition = $container->getDefinition('twig');
$twigDefinition
->addMethodCall('registerUndefinedFilterCallback', [[new Reference('twig.missing_extension_suggestor'), 'suggestFilter']])
@@ -18,13 +18,36 @@ use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
use Twig\Extra\TwigExtraBundle\Extensions;
if (!method_exists(ContainerBuilder::class, 'getAutoconfiguredAttributes')) {
/** @internal */
trait TwigExtraExtensionTrait
{
public function load(array $configs, ContainerBuilder $container): void
{
$this->doLoad($configs, $container);
}
}
} else {
/** @internal */
trait TwigExtraExtensionTrait
{
/** @return void */
public function load(array $configs, ContainerBuilder $container)
{
$this->doLoad($configs, $container);
}
}
}
/**
* @author Fabien Potencier <fabien@symfony.com>
*/
class TwigExtraExtension extends Extension
{
/** @return void */
public function load(array $configs, ContainerBuilder $container)
use TwigExtraExtensionTrait;
private function doLoad(array $configs, ContainerBuilder $container): void
{
$loader = new PhpFileLoader($container, new FileLocator(\dirname(__DIR__).'/Resources/config'));
$configuration = $this->getConfiguration($configs, $container);
+18 -6
View File
@@ -15,13 +15,25 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Twig\Extra\TwigExtraBundle\DependencyInjection\Compiler\MissingExtensionSuggestorPass;
class TwigExtraBundle extends Bundle
{
/** @return void */
public function build(ContainerBuilder $container)
if (!method_exists(ContainerBuilder::class, 'getAutoconfiguredAttributes')) {
class TwigExtraBundle extends Bundle
{
parent::build($container);
public function build(ContainerBuilder $container): void
{
parent::build($container);
$container->addCompilerPass(new MissingExtensionSuggestorPass());
$container->addCompilerPass(new MissingExtensionSuggestorPass());
}
}
} else {
class TwigExtraBundle extends Bundle
{
/** @return void */
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new MissingExtensionSuggestorPass());
}
}
}