次のフリーマーカー テンプレートがあります。
[#local snippet ][#noparse]
[#assign out ]value: ${v}
[/#assign]
[/#noparse]
[/#local]
[#assign hook = snippet?interpret ]
...
[#macro trigger ]
[@hook /]
[/#macro]
...
[#list values as v ]
[@trigger ]
[/#list]
${out}
それが本質的に行うことは、後で特定の瞬間に実行するフックと、その実行をトリガーするマクロを定義することです。
このテンプレートをレンダリングしようとすると、次のエラーが発生します。
The following has evaluated to null or missing:
==> v [in template "xxx.ftl->anonymous_interpreted" at line 1, column 17]
次の点に注意してください。
[#list values as v ]
[@hook ]
[/#list]
つまり、期待どおりにテンプレートをレンダリングvalue: xxx
し、リスト内の各値を出力します。
- ここで何がうまくいかないのか誰か知っていますか?
- これを期待どおりに動作させる方法はありますか?
編集
解釈されたスニペットの代わりに通常のマクロを渡すと、エラーが発生しないことがわかりました。
[#assign hook = myMacro ]
...
ただし、マクロが別の名前空間で定義されている場合はそうではありません。