TWIG マクロでテンプレート変数にアクセスできません。
簡単な例を次に示します。
{% set myname = "Ligio" %}
{{ _self.pagedurl(1) }}
{% macro pagedurl(page) %}
Hi {{ _self.myname }}! This is Page Num {{ page }}
{% endmacro %}
変数mynameをマクロに渡さずにアクセスするにはどうすればよいですか?
それはいけません。
ドキュメントに記載されているように:
PHP 関数として、マクロは現在のテンプレート変数にアクセスできません。
あなたの唯一の解決策は、パラメータをに渡すことmacro
です:
{% import _self as flow %}
{{ flow.pagedurl(1, "Ligio") }}
{% macro pagedurl(page, myname) %}
Hi {{ myname }}! This is Page Num {{ page }}
{% endmacro %}
重要な注意点:
私の例で気づいたかもしれませんが、 I call {% import _self as flow %}
.
これはあなたがしなければならないことです:
マクロを使用するテンプレートでマクロを定義する場合、インポートする代わりに _self.input() を介してマクロを直接呼び出したくなるかもしれません。動作しているように見えても、これは現在の実装の単なる副作用であり、Twig 2.x では動作しません。