представьте, что у вас есть шаблон веточки (tplA.twig), который включает другой
<p>Twig template A</p>
{% set test = "in tpl A" %}
<p>first, variable is: {{ test }}</p>
{% include "tplB.twig" %}
<p>and the variable is: {{ test }}</p>
и включенный шаблон (tplB.twig)
<div>Content of tpl B</div>
{% set test = "now is tpl B" %}
Каков наилучший способ установить / изменить переменную во включенном шаблоне и использовать ее в главном шаблоне? Как использовать глобалы? Обратите внимание, что я не могу использовать блоки и расширения, и я не использую Symfony.
Большое спасибо
РЕДАКТИРОВАТЬ
Настоящий контекст — это очень простой многоязычная структура. Для страницы у меня есть один главный шаблон:
<h1>{{ i18n('mainTitle') }}</h1>
<h2>current language (fr, en): {{ ln }}</h2>
<!-- here a list of photos, but not in a foreach loop -->
<div>
<div>
<img src="/same/for/all/languages-a.jpg" alt="localized A" />
<span>localized A</span>
</div>
<div>
<img src="/same/for/all/languages-b.jpg" alt="localized B" />
<span>localized B</span>
</div>
<!-- etc. -->
</div>
Это очень маленький веб-сайт, поэтому я не создал сложную структуру с базой данных, и я хотел управлять всем этим в шаблоне.
Дело в том, как можно отобразить правильные локализованные строки? Я подумал о том, чтобы включить локализованный шаблон для разделения проблем. Что-то вроде:
<!-- before the photos list -->
{% include ln ~ '/photos-list.twig' %}
<!-- then the photos list -->
И внутри этого шаблона я бы установил все переменные в нужной локали, чтобы я мог использовать их в своем списке фотографий. (как объяснено в первой части моего вопроса)
обратите внимание, что у меня есть эта структура для всех остальных страниц. Текстовое содержимое разделяется в папке локали, и каждая страница имеет основной шаблон (опять же, это очень простой персональный сайт)
В конце концов я вставил hudge если Заявление перед списком фотографий. Если локаль фр, установить переменные с французскими текстами, если это ан, установить переменные с английскими текстами.
Это делает трюк, так что я в порядке с этим ^^
Почему бы вам не переместить второй вызов {{ test }}
в tplB
(по этому поводу)?
<div>Content of tpl B</div>
{% set test = "now is tpl B" %}
<p>and the variable is: {{ test }}</p>
Других решений пока нет …