2014-01-18 4 views
3

에서 모든 블록을 얻기 내 base.template.html나뭇 가지 - 이것은 템플릿

{% block header %}{% endblock %} 
{% block body %}{% endblock %} 
{% block footer %}{% endblock %} 

업데이트]

내 quetion 내가 배열로 base.template.html에서 모든 블록을 얻을 수있는 방법인가?

array => ['header', 'body', 'footer'] 

나는이 문제를 해결할 수 regex를 사용 알지만, 나뭇 가지 내가 나뭇 가지가 블록 배열을 반환하는 것이 가능 여부를 알 수없는 별칭 기능

block('header') 
+0

당신이 "수"무엇을 의미합니까 :

$twig = new Twig_Environment; /** @var $template Twig_Template */ $template = $twig->loadTemplate('base.template.html'); /** @var $blocks array */ $blocks = $template->getBlockNames(); var_dump($blocks); 

블록 이름의 배열을 반환합니다? 다른 템플릿? PHP를 통해? – ivoba

+0

기본 템플릿에서 모든 블록을 가져와야합니다. 배열 또는 변수'header, body, footer'. –

답변

0

있습니다. 여기서 뭔가를 찾았습니다 : 파서 ​​섹션 아래에 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]; 
} 

은 알려 주시기 바랍니다. 그렇지 않으면 위의 함수는 빠르고 가벼운 대안입니다.

3

쉽습니다.

['header', 'body', 'footer'] 
관련 문제