unwrapReference($context, $val); } // Add some key to verify the value could be modified if (is_array($val)) { $val['#printed'] = TRUE; } var_dump($val); return ''; } $twig = Drupal::service('twig'); //$loader = new Twig_Loader_String(); //$twig = new Twig_Environment($loader, array( // 'debug' => TRUE, // 'strict_variables' => FALSE, // 'autoescape' => FALSE, // 'cache' => false, // 'base_template_class' => 'Drupal\Core\Template\TwigTemplate', //)); $twig->addFunction('change', new TwigReferenceFunction('twig_change')); $twig->addFunction('change_val', new Twig_Function_Function('twig_change')); //$twig->addNodeVisitor(new TwigReferenceNodeVisitor()); //$twig->addExtension(new Twig_Extension_Debug()); $vars = array('x' => array('foo'), 'y' => array( '#markup' => 'bar', 'bar1' => array( '#markup' => 'bar1', ), 'bar2' => array( '#markup' => 'bar2', ) )); $name = 'test-twig-reference-node-visitor.html.twig'; //print $twig->parse($twig->tokenize($code)); //print $twig->loadTemplate($name)->render(array('vars' => $vars)); print twig_render_template($name, array('vars' => $vars));