9
Je comprends le concept, mais je ne comprends pas la syntaxe.Je ne comprends pas Jinja2 Call Blocks
Je vais utiliser le example utilisé sur leur site
{% macro render_dialog(title, class='dialog') -%}
<div class="{{ class }}">
<h2>{{ title }}</h2>
<div class="contents">
{{ caller() }}
</div>
</div>
{%- endmacro %}
{% call render_dialog('Hello World') %}
This is a simple dialog rendered by using a macro and
a call block.
{% endcall %}
Quelle sera la sortie? Sous-question (parce que je suis confus sur comment cela fonctionne): Êtes-vous autorisé à avoir seulement 1 appelant par macro?
Cool. Eh bien, qu'est-ce qui fait que d'appeler une macro dans une autre macro? –
Vous pouvez considérer une macro comme une fonction dans un langage traditionnel. Le bloc d'appel est juste une invocation de cette fonction. – Marii
J'ai trouvé qu'avec une macro imbriquée exécutant 'caller()' dans la macro imbriquée a donné une erreur, puisqu'aucune donnée d'appelant ne lui avait été passée. Ce que je voulais réellement, c'était les données passées à la macro parent. J'ai été capable d'obtenir ceci par, dans la macro externe, en faisant '{% set content = caller()%}' et ensuite dans la macro interne en utilisant '{{content}}'. – tremby