Почему тег расширения 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>

И теперь у меня есть проблема с тегом 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",

4

Решение

Я нашел проблему.

В шаблоне test.html.twig у меня была также глобальная форма, и я был убежден, что эта форма не важна, но … https://github.com/symfony/symfony/issues/5284 Похоже, что эта ошибка еще не полностью исправлена. Я удалил _self из {% form_theme формы с помощью [_self, form_theme]%}, и теперь все работает как ожидалось.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]