From Twig call:
- Make syntax compatible with "include" twig tag providing parent context by default and supporting "only" and "with" keywords.
- Make follow-up to create get_render_vars() function that uses the new #render_function approach to get just the variables out. (Drillability part 2)
Problem/Motivation
Drillability for Twig is important, but the scope was not clear and how to support #post_render / #theme_wrappers / drupal_render integration.
Proposed resolution
This issue frees drillability to only allow to drill-down by splitting the use case of supporting #post_render / #theme_wrappers and the rest of drupal_render into an inline_template twig tag, by replacing the actual engine render call with a method called on a twig template class.
'#render_function' => array($template, 'magicMethodName'),
Example:
{{ link }}
vs.
{% inline_template link %}
<a href="{{ attributes.href }}">{{ text }}</a>
{% endinline_template %}
Remaining tasks
* Move the #type specific things to a follow-up
** Create the follow-up and make clear what the problems are.
* Fix syntax and make it possible to specify an identifier and an expression, if the expression is a render array, hide and show will work (remove hard-coded "link")
** Like: {% inline_template "link" link %}
** Or like: {% inline_template "link" { '#type': 'link', '#href': 'node', '#title': 'hi' } %}
* Clean-up, docs and get this committed
Done tasks
* Create proof-of-concept by extending macros. This inline templates are added as macros, but internally use a different Twig_Node to call drupal_render instead.
* Extend theme() to allow setting the $render_function used to render the template within the "render variables".
User interface changes
* None.
API changes
* Adding of a new twig tag.
Related Issues
#2008450: Provide for a drillable variable structure in Twig templates