mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-10 17:36:53 +00:00
Add error message when calling parent() in a block that doesn't exist
This commit is contained in:
committed by
Fabien Potencier
parent
82004b85f8
commit
4587f67621
@@ -1,6 +1,6 @@
|
||||
* 2.2.1 (2017-XX-XX)
|
||||
|
||||
* n/a
|
||||
* added error message when calling `parent()` in a block that doesn't exist in the parent template
|
||||
|
||||
* 2.2.0 (2017-02-26)
|
||||
|
||||
|
||||
@@ -204,6 +204,8 @@ abstract class Twig_Template
|
||||
}
|
||||
} elseif (false !== $parent = $this->getParent($context)) {
|
||||
$parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
|
||||
} elseif (isset($blocks[$name])) {
|
||||
throw new Twig_Error_Runtime(sprintf('Block "%s" should not call parent() in "%s" as the block does not exist in the parent template "%s".', $name, $blocks[$name][0]->getTemplateName(), $this->getTemplateName()), -1, $blocks[$name][0]->getTemplateName());
|
||||
} else {
|
||||
throw new Twig_Error_Runtime(sprintf('Block "%s" on template "%s" does not exist.', $name, $this->getTemplateName()), -1, $this->getTemplateName());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
"block" calling parent() with no definition in parent template
|
||||
--TEMPLATE--
|
||||
{% extends "parent.twig" %}
|
||||
{% block label %}{{ parent() }}{% endblock %}
|
||||
--TEMPLATE(parent.twig)--
|
||||
{{ block('label') }}
|
||||
--DATA--
|
||||
return array()
|
||||
--EXCEPTION--
|
||||
Twig_Error_Runtime: Block "label" should not call parent() in "index.twig" as the block does not exist in the parent template "parent.twig" in "index.twig" at line 3.
|
||||
@@ -131,6 +131,17 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
|
||||
$template->displayBlock('unknown', array());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Twig_Error_Runtime
|
||||
* @expectedExceptionMessage Block "foo" should not call parent() in "index.twig" as the block does not exist in the parent template "parent.twig"
|
||||
*/
|
||||
public function testDisplayBlockWithUndefinedParentBlock()
|
||||
{
|
||||
$twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock());
|
||||
$template = new Twig_TemplateTest($twig, 'parent.twig');
|
||||
$template->displayBlock('foo', array(), array('foo' => array(new Twig_TemplateTest($twig, 'index.twig'), 'block_foo')), false);
|
||||
}
|
||||
|
||||
public function testGetAttributeOnArrayWithConfusableKey()
|
||||
{
|
||||
$twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock());
|
||||
|
||||
Reference in New Issue
Block a user