Fixed inheritance in a 'use'-hierarchy

This commit is contained in:
Martin Hasoň
2014-03-24 06:05:09 +01:00
parent dab8d90755
commit 9e0907e19a
6 changed files with 136 additions and 1 deletions
+1 -1
View File
@@ -250,7 +250,7 @@ abstract class Twig_Template implements Twig_TemplateInterface
*/
public function display(array $context, array $blocks = array())
{
$this->displayWithErrorHandling($this->env->mergeGlobals($context), $blocks);
$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
}
/**
@@ -0,0 +1,25 @@
--TEST--
"use" tag
--TEMPLATE--
{% use "parent.twig" %}
{{ block('container') }}
--TEMPLATE(parent.twig)--
{% use "ancestor.twig" %}
{% block sub_container %}
<div class="overriden_sub_container">overriden sub_container</div>
{% endblock %}
--TEMPLATE(ancestor.twig)--
{% block container %}
<div class="container">{{ block('sub_container') }}</div>
{% endblock %}
{% block sub_container %}
<div class="sub_container">sub_container</div>
{% endblock %}
--DATA--
return array()
--EXPECT--
<div class="container"> <div class="overriden_sub_container">overriden sub_container</div>
</div>
@@ -0,0 +1,24 @@
--TEST--
"use" tag
--TEMPLATE--
{% use "ancestor.twig" %}
{% use "parent.twig" %}
{{ block('container') }}
--TEMPLATE(parent.twig)--
{% block sub_container %}
<div class="overriden_sub_container">overriden sub_container</div>
{% endblock %}
--TEMPLATE(ancestor.twig)--
{% block container %}
<div class="container">{{ block('sub_container') }}</div>
{% endblock %}
{% block sub_container %}
<div class="sub_container">sub_container</div>
{% endblock %}
--DATA--
return array()
--EXPECT--
<div class="container"> <div class="overriden_sub_container">overriden sub_container</div>
</div>
@@ -0,0 +1,24 @@
--TEST--
"use" tag
--TEMPLATE--
{% use 'file2.html.twig' with foobar as base_base_foobar %}
{% block foobar %}
{{- block('base_base_foobar') -}}
Content of block (second override)
{% endblock foobar %}
--TEMPLATE(file2.html.twig)--
{% use 'file1.html.twig' with foobar as base_foobar %}
{% block foobar %}
{{- block('base_foobar') -}}
Content of block (first override)
{% endblock foobar %}
--TEMPLATE(file1.html.twig)--
{% block foobar -%}
Content of block
{% endblock foobar %}
--DATA--
return array()
--EXPECT--
Content of block
Content of block (first override)
Content of block (second override)
@@ -0,0 +1,24 @@
--TEST--
"use" tag
--TEMPLATE--
{% use 'file2.html.twig'%}
{% block foobar %}
{{- parent() -}}
Content of block (second override)
{% endblock foobar %}
--TEMPLATE(file2.html.twig)--
{% use 'file1.html.twig' %}
{% block foobar %}
{{- parent() -}}
Content of block (first override)
{% endblock foobar %}
--TEMPLATE(file1.html.twig)--
{% block foobar -%}
Content of block
{% endblock foobar %}
--DATA--
return array()
--EXPECT--
Content of block
Content of block (first override)
Content of block (second override)
@@ -0,0 +1,38 @@
--TEST--
"use" tag
--TEMPLATE--
{% use 'file2.html.twig' %}
{% use 'file1.html.twig' with foo %}
{% block foo %}
{{- parent() -}}
Content of foo (second override)
{% endblock foo %}
{% block bar %}
{{- parent() -}}
Content of bar (second override)
{% endblock bar %}
--TEMPLATE(file2.html.twig)--
{% use 'file1.html.twig' %}
{% block foo %}
{{- parent() -}}
Content of foo (first override)
{% endblock foo %}
{% block bar %}
{{- parent() -}}
Content of bar (first override)
{% endblock bar %}
--TEMPLATE(file1.html.twig)--
{% block foo -%}
Content of foo
{% endblock foo %}
{% block bar -%}
Content of bar
{% endblock bar %}
--DATA--
return array()
--EXPECT--
Content of foo
Content of foo (first override)
Content of foo (second override)
Content of bar
Content of bar (second override)