diff --git a/core/.deprecation-ignore.txt b/core/.deprecation-ignore.txt index 284747481b6c6c632b73a69ecfb42fe908e46d5f..3c1c894cf17ddc6800ed955efab261d6e2c81c6c 100644 --- a/core/.deprecation-ignore.txt +++ b/core/.deprecation-ignore.txt @@ -64,8 +64,4 @@ %The "Drupal\\Tests\\Core\\Utility\\MockContainerAware" class implements "Symfony\\Component\\DependencyInjection\\ContainerAwareInterface" that is deprecated since Symfony 6.4, use dependency injection instead.% # Twig 3. -%Since twig/twig 3.12: Not passing an instance of "TwigFunction" when creating a "attach_library" function of type "Twig\\Node\\Expression\\FunctionExpression" is deprecated.% -%Since twig/twig 3.12: Not passing an instance of "TwigFunction" when creating a "add_component_context" function of type "Twig\\Node\\Expression\\FunctionExpression" is deprecated.% -%Since twig/twig 3.12: Not passing an instance of "TwigFunction" when creating a "render_var" function of type "Twig\\Node\\Expression\\FunctionExpression" is deprecated.% -%Since twig/twig 3.12: Not passing an instance of "TwigFunction" when creating a "validate_component_props" function of type "Twig\\Node\\Expression\\FunctionExpression" is deprecated.% %Since twig/twig 3.12: Twig Filter "spaceless" is deprecated% diff --git a/core/lib/Drupal/Core/Template/ComponentNodeVisitor.php b/core/lib/Drupal/Core/Template/ComponentNodeVisitor.php index da7a5e85bbfe3ef9d546dc54402b9a61b279ee7e..6b67035a7a5ff4f7226a98687e64b93e3de8a844 100644 --- a/core/lib/Drupal/Core/Template/ComponentNodeVisitor.php +++ b/core/lib/Drupal/Core/Template/ComponentNodeVisitor.php @@ -9,6 +9,7 @@ use Drupal\Core\Render\Component\Exception\InvalidComponentException; use Drupal\Core\Theme\ComponentPluginManager; use Twig\Environment; +use Twig\TwigFunction; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\ModuleNode; @@ -55,17 +56,17 @@ public function leaveNode(Node $node, Environment $env): ?Node { $print_nodes[] = new PrintNode(new ConstantExpression(sprintf('<!-- %s Component start: %s -->', $emoji, $component_id), $line), $line); } $print_nodes[] = new PrintNode(new FunctionExpression( - 'attach_library', + new TwigFunction('attach_library', [$env->getExtension(TwigExtension::class), 'attachLibrary']), new Node([new ConstantExpression($component->getLibraryName(), $line)]), $line ), $line); $print_nodes[] = new PrintNode(new FunctionExpression( - 'add_component_context', + new TwigFunction('add_component_context', [$env->getExtension(ComponentsTwigExtension::class), 'addAdditionalContext'], ['needs_context' => TRUE]), new Node([new ConstantExpression($component_id, $line)]), $line ), $line); $print_nodes[] = new PrintNode(new FunctionExpression( - 'validate_component_props', + new TwigFunction('validate_component_props', [$env->getExtension(ComponentsTwigExtension::class), 'validateProps'], ['needs_context' => TRUE]), new Node([new ConstantExpression($component_id, $line)]), $line ), $line); diff --git a/core/lib/Drupal/Core/Template/TwigNodeVisitor.php b/core/lib/Drupal/Core/Template/TwigNodeVisitor.php index 3aac8dea9aa9f32d98a438921ac7da5749cabd26..e4755fcdec2bde8650e15246ce8f757f03d6a835 100644 --- a/core/lib/Drupal/Core/Template/TwigNodeVisitor.php +++ b/core/lib/Drupal/Core/Template/TwigNodeVisitor.php @@ -3,6 +3,7 @@ namespace Drupal\Core\Template; use Twig\Environment; +use Twig\TwigFunction; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Node; @@ -47,7 +48,11 @@ public function leaveNode(Node $node, Environment $env): ?Node { $class = get_class($node); $line = $node->getTemplateLine(); return new $class( - new FunctionExpression('render_var', new Node([$node->getNode('expr')]), $line), + new FunctionExpression( + new TwigFunction('render_var', [$env->getExtension(TwigExtension::class), 'renderVar']), + new Node([$node->getNode('expr')]), + $line + ), $line ); }