2016-08-17 4 views
0

블록이 사용되는 파일 (base.html.twig)을 확장하는 파일 (index.html.twig)에서 {% block %}을 (를) 겹쳐 쓰려고합니다. 그러나 확장 파일에는 index.html.twig의 내용을 덮어 쓰는 블록이있는 다른 나뭇 가지 파일 (feature.twig)이 포함되어 있습니다. 그게 가능합니까? include 문 이외의 다른 것을 사용했을 수 있습니까?나뭇 가지 : {% 블록 %} 및 확장

{# index.html.twig #} 
{% extends 'base.html.twig' %} 
{{ include('feature.html.twig') }} 

{# base.html.twig #} 
{% block extraJs %}{% endblock %} 

{# feature.html.twig #} 
{% block extraJs %}<script>$('...');</script>{% endblock %} 
+0

'include'는 렌더링 된 버전을 반환하므로이 설정으로 아무 것도 할 수 없다고 생각합니다. – Yoshi

+0

포함되지 않는 템플릿을 포함하는 템플릿 블록을 변경하십시오 – DarkBee

+0

업데이트 된 질문을 읽어주십시오 – cnmicha

답변

2

include α- 함수 (또는 태그)와 관련된 문제는 오직 렌더링 결과를 포함합니다. 포함 파일의 블록을 조작 할 수 없습니다.

하지만 귀하의 경우에는 필요하지 않습니다. index.html.twigbase.html.twig을 확장하기 때문에, 당신과 같이 블록 extraJs을 덮어 쓸 수 있습니다 : 필요한 경우

{# index.html.twig #} 
{% extends 'base.html.twig' %} 

{% block extraJs %} 
    {{ include('feature.html.twig') }} 
{% endblock } 

당신이 parent α- 함수를 사용하여 원래의 블록을 확장 할 수 있습니다. 예 :

{# index.html.twig #} 
{% extends 'base.html.twig' %} 

{% block extraJs %} 
    {{ parent() }} {# `extraJs`-block content from `base.html.twig` #} 
    {{ include('feature.html.twig') }} 
{% endblock }