Skip to content

Commit bdafd64

Browse files
committed
Issue #3040210 by Spokje, phenaproxima, shaal, lauriii, hctom, a.dmitriiev, xjm, cilefen, eelkeblok: Updating twig/twig to v1.38.2 (included in Drupal 8.6.11) causes fatal error when embed tags are used in templates
1 parent 9e88b68 commit bdafd64

File tree

7 files changed

+53
-1
lines changed

7 files changed

+53
-1
lines changed

lib/Drupal/Core/Template/TwigEnvironment.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public function getTemplateClass($name, $index = NULL) {
137137
// node.html.twig for the output of each node and the same compiled class.
138138
$cache_index = $name . (NULL === $index ? '' : '_' . $index);
139139
if (!isset($this->templateClasses[$cache_index])) {
140-
$this->templateClasses[$cache_index] = $this->templateClassPrefix . hash('sha256', $this->loader->getCacheKey($name)) . (NULL === $index ? '' : '_' . $index);
140+
$this->templateClasses[$cache_index] = parent::getTemplateClass($name, $index);
141141
}
142142
return $this->templateClasses[$cache_index];
143143
}

modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,11 @@ public function renderable() {
104104
];
105105
}
106106

107+
/**
108+
* Renders for testing the embed tag in a Twig template.
109+
*/
110+
public function embedTagRender() {
111+
return ['#theme' => 'twig_theme_test_embed_tag'];
112+
}
113+
107114
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This line is from twig_theme_test/templates/twig-theme-test-embed-tag-embedded.html.twig
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% embed "@twig_theme_test/twig-theme-test-embed-tag-embedded.html.twig" %}
2+
3+
{% endembed %}

modules/system/tests/modules/twig_theme_test/twig_theme_test.module

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ function twig_theme_test_theme($existing, $type, $theme, $path) {
7373
],
7474
'template' => 'twig_theme_test.renderable',
7575
];
76+
$items['twig_theme_test_embed_tag'] = [
77+
'variables' => [],
78+
'template' => 'twig_theme_test.embed_tag',
79+
];
7680
return $items;
7781
}
7882

modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,10 @@ twig_theme_test_renderable:
6969
_controller: '\Drupal\twig_theme_test\TwigThemeTestController::renderable'
7070
requirements:
7171
_access: 'TRUE'
72+
73+
twig_theme_test_embed_tag:
74+
path: '/twig-theme-test/embed-tag'
75+
defaults:
76+
_controller: '\Drupal\twig_theme_test\TwigThemeTestController::embedTagRender'
77+
requirements:
78+
_access: 'TRUE'
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Drupal\Tests\system\Functional\Theme;
4+
5+
use Drupal\Tests\BrowserTestBase;
6+
7+
/**
8+
* Tests Twig environment.
9+
*
10+
* @group Theme
11+
*/
12+
class TwigEnvironmentTest extends BrowserTestBase {
13+
14+
/**
15+
* {@inheritdoc}
16+
*/
17+
protected static $modules = ['twig_theme_test'];
18+
19+
/**
20+
* Tests template class loading with Twig embed.
21+
*/
22+
public function testTwigEmbed() {
23+
$assert_session = $this->assertSession();
24+
// Test the Twig embed tag.
25+
$this->drupalGet('twig-theme-test/embed-tag');
26+
$assert_session->statusCodeEquals(200);
27+
$assert_session->responseContains('This line is from twig_theme_test/templates/twig-theme-test-embed-tag-embedded.html.twig');
28+
}
29+
30+
}

0 commit comments

Comments
 (0)