如何从树枝模板中检索所有变量?

2022-08-30 09:26:46

是否可以使用PHP检索Twig模板中的所有变量?

示例 someTemplate.twig.php:

Hello {{ name }}, 
your new email is {{ email }}

现在我想做这样的事情:

$template = $twig->loadTemplate('someTemplate');
$variables = $template->getVariables();

$variables现在应包含“名称”和“电子邮件”。

我想这样做的原因是我正在一个CMS系统上工作,其中我的树枝模板和变量由我的用户动态设置,并且它们还通过API填充变量。

我想将默认值设置为未设置的变量,因此我需要模板中存在的所有变量的列表...


答案 1

我发现这对于获取当前上下文中可用的所有顶级键很有用:

<ol>
    {% for key, value in _context  %}
      <li>{{ key }}</li>
    {% endfor %}
</ol>

感谢 https://www.drupal.org/node/1906780


答案 2

2019年更新

虽然确实有效,但在某些情况下,如果它生成了太多信息(例如,由于递归),它可能会导致PHP的“内存耗尽”错误。在这种情况下,请尝试按名称获取已定义变量的列表,而不转储其内容。{{ dump() }}{{ dump(_context|keys) }}

2017年更新

通过使用过滤器是可能的。感谢您在评论中指出这一点!{{ dump() }}


过时的

这是不可能的。

您可以在树枝模板中查找这些变量并向其添加过滤器。它将检查变量是否已定义且不为空,如果没有 - 将用您的值替换它。|default('your_value')


推荐