Неожиданная переменная не существует Ошибка в предварительном просмотре после обновления Sulu CMS

Я определяю несколько глобальных переменных веток в шаблонах за пределами блока контента, теперь, после обновления до sulu 2.0, в предварительном просмотре возникает неожиданная ошибка «Переменная не существует». Фактический рендеринг страницы остается неизменным. После комментария @JohannesWachter выясняется, что предварительный просмотр теперь отображает только блок контента и игнорирует внешние переменные.

У меня есть следующий (упрощенный) код, который работал в sulu 1.6: main.html.twig

{% extends "base.html.twig" %}

{% set hasContent = content is defined %}

{% if hasContent %}
    {% set headline = content.headline is defined and content.headline ? content.headline : content.title %}
{% endif %}

{% block content %}
        <div class="row">

            {% block row %}
                <section class="col-sm-8 main-content">
                    {% if hasContent and headline is defined%}
                        <h1 class="headline" property="title">{{ headline }}</h1>
                    {% endif %}

В предварительном просмотре я получаю следующую ошибку для строки {% if hasContent and headline is defined%}: Переменная "hasContent" не существует. (main.html.twig, строка 43)

Есть ли способ сделать такие глобальные переменные доступными в предварительном просмотре и на главной странице для sulu 2.0?


person Andreas    schedule 21.04.2020    source источник
comment
ты про превью? в peview мы отображаем только блок контента, чтобы повысить там производительность. Этот механизм также был реализован в 1.6, но переработан в 2.0.   -  person Johannes Wachter    schedule 22.04.2020
comment
Привет @JohannesWachter - да, проблема проявляется в предварительном просмотре, при рендеринге внешнего интерфейса все в порядке! Спасибо за это понимание, я обновляю вопрос соответственно.   -  person Andreas    schedule 22.04.2020
comment
После проверки моего кода я, вероятно, смогу переместить рассматриваемые определения внутрь block content, но все же было бы интересно, если бы был способ поддерживать доступ к переменным предварительного просмотра вне блока содержимого.   -  person Andreas    schedule 22.04.2020
comment
в настоящее время нет - проблема заключается в том, чтобы обновить только часть предварительного просмотра (часть контента), мы визуализируем только эту часть. Twig не поддерживает оценку переменных за пределами этого блока.   -  person Johannes Wachter    schedule 22.04.2020


Ответы (1)


Я исправил это, переместив переменные, используемые в блоке контента, в блок контента:

{% extends "base.html.twig" %}

{# set variables nesessary to adjust base.html.twig only #}

{% block content %}
    {% set hasContent = content is defined %}

    {% if hasContent %}
        {% set headline = content.headline is defined and content.headline ? content.headline : content.title %}
    {% endif %}

        <div class="row">

            {% block row %}
                <section class="col-sm-8 main-content">
                    {% if hasContent and headline is defined%}
                        <h1 class="headline" property="title">{{ headline }}</h1>
                    {% endif %}

Я попытался немного переместить определение переменной в файл setup.html.twig, но переменные, определенные только внутри включенного шаблона, больше не видны снаружи.

person Andreas    schedule 23.04.2020