render_partial
The render_partial function will render a template outside of the current context.
Consider the following template:
{# @mynamespace/article.twig #}
<article>
<a href="{{ link }}">
<header>
<h1>{{ title }}</h1>
</header>
<div class="body">{{ text }}</div>
</a>
</article>This would work fine if you normally use this template directly from php like so:
View::render('@mynamespace/article', $article->toArray());Now imagine that you want to render this template inside a loop:
{% for article in articles %}
{% include '@mynamespace/article.twig' %}
{% endfor %}The variables you would want to use in the template would now be bound to "article" and link would in this case be located on article.link.
But the render_partial function will, behind the scenes, use View::render() to render the template:
{% for article in articles %}
{{ render_partial('@mynamespace/article', article.toArray())
{# Or if "article" is an array #}
{{ render_partial('@mynamespace/article', article)
{% endfor %}
{# The template will be render outside of the scope as if "article" was injected as the template data #}This would be equivalent to:
View::render('@mynamespace/article', $article->toArray());Last updated
Was this helpful?