Commit eaa70724 authored by catch's avatar catch
Browse files

Issue #3457168 by raphaelbertrand, gauravvvv, bbrala, longwave: Since...

Issue #3457168 by raphaelbertrand, gauravvvv, bbrala, longwave: Since twig/twig 3.9: error with "twig_escape_filter" function usage in /core/lib/Drupal/Core/Template/TwigExtension.php

(cherry picked from commit 128310c8)
parent 3fd22f7e
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
use Twig\Node\Node;
use Twig\TwigFilter;
use Twig\TwigFunction;
use Twig\Runtime\EscaperRuntime;

/**
 * A class providing Drupal Twig extensions.
@@ -461,7 +462,7 @@ public function escapeFilter(Environment $env, $arg, $strategy = 'html', $charse
      if ($strategy == 'html') {
        return Html::escape($return);
      }
      return twig_escape_filter($env, $return, $strategy, $charset, $autoescape);
      return $env->getRuntime(EscaperRuntime::class)->escape($arg, $strategy, $charset, $autoescape);
    }

    // This is a normal render array, which is safe by definition, with
+13 −0
Original line number Diff line number Diff line
@@ -126,4 +126,17 @@ public function testDump(): void {

  }

  /**
   * Test if Drupal html strategy is done and the fallback to Twig itself works.
   */
  public function testRenderStrategies(): void {
    /** @var \Drupal\Core\Template\TwigExtension $extension */
    $extension = \Drupal::service('twig.extension');
    /** @var \Drupal\Core\Template\TwigEnvironment $twig */
    $twig = \Drupal::service('twig');

    $this->assertSame('test&', $extension->escapeFilter($twig, 'test&'), 'TwigExtension::escapeFilter() renders escaped & when strategy is html (default).');
    $this->assertSame('test\u0026', $extension->escapeFilter($twig, 'test&', 'js'), 'TwigExtension::escapeFilter() renders escaped & when strategy is js.');
  }

}