mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 20:06:31 +00:00
Fixed inheritance in a 'use'-hierarchy
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user