php-测试Twig 2中是否存在宏
作者:互联网
我需要能够测试Twig中宏的存在并动态调用它.
这是我尝试过的:
{% macro test(value) %}
Value: {{ value }}
{% endmacro %}
{% import "_macros.html.twig" as macro %}
{{ attribute(macro, 'test', ['foo']) }}
但我收到此错误:禁止访问Twig_Template属性.
问候,
解决方法:
从Twig 1.20.0开始,出于安全原因,模板属性不再可用,因此没有本机方法可以正确地进行操作.
您最终可以使用source
函数来获取宏的源文件并对其进行解析,以检查宏是否存在,但这是一种易于绕过的丑陋的hack.
例:
主枝
{% import 'macros.twig' as macros %}
{% set sourceMacros = source(macros) %}
foo {% if 'foo()' in sourceMacros %} exists {% else %} does not exist {% endif %}
bar {% if 'bar()' in sourceMacros %} exists {% else %} does not exist {% endif %}
宏树枝
{% macro foo() %}
Hello, world!
{% endmacro %}
另一种方法是创建custom test来完成这项工作.
标签:symfony,twig,php 来源: https://codeday.me/bug/20191111/2020342.html