这是我的base.template.html
{% block header %}{% endblock %}
{% block body %}{% endblock %}
{% block footer %}{% endblock %}
已更新
我的问题是如何将base.template.html
中的所有块都放到数组中?
array => ['header', 'body', 'footer']
我知道使用regex
可以解决这个问题,但Twig有别名功能
block('header')
答案 0 :(得分:3)
这很简单!
$twig = new Twig_Environment;
/** @var $template Twig_Template */
$template = $twig->loadTemplate('base.template.html');
/** @var $blocks array */
$blocks = $template->getBlockNames();
var_dump($blocks);
将返回块名称数组:
['header', 'body', 'footer']
答案 1 :(得分:0)
我不知道Twig是否可以返回一个块数组。我在这里找到了一些东西:http://twig.sensiolabs.org/api/master/index.html在解析器部分下面有一个getBlockStack()函数。但不太确定如何访问它。
目前我使用正则表达式查找所有块名称:
private function _getBlocks($str) {
// find all block starting tags
preg_match_all("/\{%\s+block\s+([a-zA-Z\_0-9]+)\s+%\}/", $str, $matches);
return $matches[1];
}
如果您找到更好的方法,请告诉我。否则,上述功能是一种快速轻便的替代方案。