В 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>
И теперь у меня есть проблема с тегом extends в моем шаблоне test.html.twig, если я использую в этом теге простую строку: {% extends 'TestBundle::base.html.twig' %}
все работает нормально, но это не работает: {% 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' %}
— Variable "testBool" does not exist in TestBundle::test.html.twig at line 1
(обратите внимание, что Twig выдает это время исключение о testBool
переменная — почему ?!)
Согласно документации TWIG все приведенные выше примеры должны работать, и я не знаю, что я сделал не так.
Я сделал много тестов, и я не могу понять какой-либо шаблон, когда extss видят переменные, а когда нет.
В настоящее время я использую Twig v1.16.0 и Symfony 2.5.4
Обновить: Я заметил еще одну странную вещь, если я положил в testTplPath
действительный путь или создать любой другой динамический эксперимент, который возвращает правильный путь, который я получил Variable "[first var in expression]" does not exist
исключение, но если он возвращает неверный путь, я получил: Unable to find template "TestBundle::SomeInvalidTemplate.html.twig"
,
Я нашел проблему.
В шаблоне test.html.twig у меня была также глобальная форма, и я был убежден, что эта форма не важна, но … https://github.com/symfony/symfony/issues/5284 Похоже, что эта ошибка еще не полностью исправлена. Я удалил _self из {% form_theme формы с помощью [_self, form_theme]%}, и теперь все работает как ожидалось.
Других решений пока нет …