我想将一组Twig宏分解为单个文件,然后使用库文件导入它们以收集所有import语句。
目前我们所有的宏都在一个文件中,但我更喜欢看到这样的内容:
的宏/ hello.twig :
{% macro hello() %}
Hello
{% endmacro %}
的宏/ goodbye.twig :
{% macro goodbye() %}
Goodbye
{% endmacro %}
macro_lib.twig :
{% import "macro/hello.twig" as hello %}
{% import "macro/goodbye.twig" as goodbye %}
基本模板应该只导入macro_lib.twig
,但这不起作用:
{% import "macro_lib.twig" as lib %}
{{ lib.hello.hello() }}
但是尝试调用嵌套的宏会返回Fatal error: Call to undefined method __TwigTemplate_d7...30::gethello()
我也尝试过类似{% from "macro/hello.twig" import hello as hello %}
的命名空间导入,但那些也失败了。
是否可以嵌套导入的宏?
答案 0 :(得分:0)
我认为您需要将macro_lib.twig
中的宏定义为
{% macro lib() %}
{% import "macro/hello.twig" as hello %}
{% import "macro/goodbye.twig" as goodbye %}
{% endmacro %}
然后你就可以调用子宏
了{% import "macro_lib.twig" as lib %}
{{ lib.hello.hello() }}
因为你拥有的macro_lib.twig
只是一个子宏的容器,你需要在里面定义一个宏才能使用它