Установите переменную Twig внутри include и используйте ее позже

представьте, что у вас есть шаблон веточки (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 если Заявление перед списком фотографий. Если локаль фр, установить переменные с французскими текстами, если это ан, установить переменные с английскими текстами.

Это делает трюк, так что я в порядке с этим ^^

4

Решение

Почему бы вам не переместить второй вызов {{ test }} в tplB (по этому поводу)?

<div>Content of tpl B</div>
{% set test = "now is tpl B" %}
<p>and the variable is: {{ test }}</p>

0

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

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

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