gpt4 book ai didi

Twig getSource block

转载 作者:行者123 更新时间:2023-12-04 21:35:06 27 4
gpt4 key购买 nike

在 Twig 中,您可以使用函数 getSource() 获取模板的源代码。

但是有没有办法获取特定块的源代码,而不是使用 {% verbatim %} (我希望模板可以工作,但也要读取块的源代码)

最佳答案

如果您的意思是实际 Twig来源,然后我给你一些东西

$twig->addFunction(new Twig_SimpleFunction('get_block_source', function(\Twig_Environment $environment, $name, $template_name = null) {
if ($template_name === null) {
foreach (debug_backtrace() as $trace) if (isset($trace['object']) && $trace['object'] instanceof Twig_Template && 'Twig_Template' !== get_class($trace['object'])) {
$template = $trace['object'];
$template_name = $template->getSourceContext()->getName();
break;
}
}
if (preg_match('#{% block '.$name.' %}(.+?){% endblock %}#is', $environment->getLoader()->getSourceContext($template_name)->getCode(), $matches)) return $matches[0];
return 'Block not found';

}, [ 'needs_environment' => true ]));

如果不传递模板名称,将定位当前的
{{ get_block_source('bar2', 'test.html') }} {# prints block bar2 from test.html #}

{% block foo %}
{{ 'Hello world' }}
{% endblock %}

{{ get_block_source('foo') }} {# print block foo from current template #}

请注意功能 getSource现在已弃用,这就是我使用 getSourceContext 的原因

关于Twig getSource block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40284749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com