为什么Twig扩展标签有时看不到一些变量?

时间:2014-09-22 11:22:24

标签: php symfony twig

在Symfony2中,我创建了简单的操作:

public function testAction()
{        
    return $this->render('TestBundle::test.html.twig', array(
        'testBool'    => true,
        'testTplPath' => 'TestBundle::base.html.twig'
    ));
}

base.html.twig:

<html><body>{% block content %}{% endblock %}</body></html>

现在我的test.html.twig模板中的extends标签有问题,如果我在这个标签中使用简单的字符串,如下所示:{% extends 'TestBundle::base.html.twig' %}一切正常,但这个dosn工作:{{ 1}}。第二个例子引发了我的错误:{% extends testTplPath %}

这很好用:Variable "testTplPath" does not exist in TestBundle::test.html.twig at line 1

抛出异常:{% extends testBool ? 'TestBundle::base.html.twig' : 'blah' %} - {% extends testBool ? testTplPath : 'blah' %}(请注意,Twig会抛出有关Variable "testBool" does not exist in TestBundle::test.html.twig at line 1变量的异常 - 为什么?!)

根据TWIG文件,abowe的所有例子都应该有用,我不知道我做错了什么。

我做了很多测试,当exted看到变量时,我无法计算出任何模式。

我目前使用的是Twig v1.16.0和Symfony 2.5.4


更新:我注意到更奇怪的事情,如果我放入testBool有效路径或创建任何其他动态experssion返回有效路径我得到testTplPath异常,但如果它返回我收到的无效路径:Variable "[first var in expression]" does not exist

1 个答案:

答案 0 :(得分:0)

我发现了问题。

在模板test.html.twig中我也有全局表单,我确信这个表单并不重要但是... https://github.com/symfony/symfony/issues/5284看起来这个bug仍然没有完全修复。我使用[_self,form_theme]%}从{%form_theme表单中删除了_self,现在一切正常。