diff --git a/core/lib/Drupal/Core/Template/TwigExtension.php b/core/lib/Drupal/Core/Template/TwigExtension.php index 551e3cb..f7991be 100644 --- a/core/lib/Drupal/Core/Template/TwigExtension.php +++ b/core/lib/Drupal/Core/Template/TwigExtension.php @@ -69,6 +69,9 @@ public function setLinkGenerator(LinkGeneratorInterface $link_generator) { public function getFunctions() { return array( // This function will receive a renderable array, if an array is detected. + new \Twig_SimpleFunction('render', 'twig_render_var'), + // render and render_var do the same thing. render_var is only kept for + // backwards compatibility. new \Twig_SimpleFunction('render_var', 'twig_render_var'), // The url and path function are defined in close parallel to those found // in \Symfony\Bridge\Twig\Extension\RoutingExtension diff --git a/core/modules/system/src/Tests/Theme/TwigFunctionTest.php b/core/modules/system/src/Tests/Theme/TwigFunctionTest.php new file mode 100644 index 0000000..0f76a5f --- /dev/null +++ b/core/modules/system/src/Tests/Theme/TwigFunctionTest.php @@ -0,0 +1,57 @@ + 'inline_template', + '#template' => '{% set cats = render(animals.some_cats_i_know) %}{{ cats }}', + '#context' => ['animals' => [ + 'some_cats_i_know' => [ + '#theme' => 'item_list', + '#title' => t('Some cats I know'), + '#items' => [ + 'Wyatt', + 'Puck', + ], + ], + 'some_dogs_i_know' => [ + '#theme' => 'item_list', + '#title' => t('Some dogs I know'), + '#items' => [ + 'Otis', + 'Peanut', + ], + ], + ]], + ]; + + $rendered = \Drupal::service('renderer')->render($element); + $this->assertEqual($rendered, '

Some cats I know

'); + } + +}