Условное наследование шаблонов не работает в Symfony 4 - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу, чтобы шаблон наследовал базовый шаблон, когда пользователь не вошел в систему, и другой шаблон, когда пользователь вошел в систему.

Я пробовал несколько вещей. Одним из очевидных является эта попытка:

{% extends app.user == null ? 'base.html.twig' : 'protected.html.twig' %}

Другая попытка:

{% extends app.user ? 'protected.html.twig' : 'base.html.twig' %}

И так далее ... ничего не работает. Всегда используется base.html.twig.

Когда я отображаю значение {{app.user}}, отображается правильное значение (имя пользователя или пусто, если вы вошли в систему или не вошли в систему соответственно)

Есть идеи?

EDIT:

Это полный шаблон, который должен быть условным, в зависимости от того, вошел ли пользователь в систему или нет.

{% extends app.user ? 'protected.html.twig' : 'base.html.twig' %}

{% block title %}Inicio{% endblock %}

{% block conditional %}  
    <style>
        .example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; }
        .example-wrapper code { background: #F5F5F5; padding: 2px 6px; }
    </style>
    <div class="example-wrapper">
        <h1>Hello {{ controller_name }}! ✅</h1>

        This friendly message is coming from:
        <ul>
            <li>Your controller at <code><a href="{{ 'src/Controller/DefaultController.php'|file_link(0) }}">src/Controller/DefaultController.php</a></code></li>
            <li>Your template at <code><a href="{{ 'templates/default/index.html.twig'|file_link(0) }}">templates/default/index.html.twig</a></code></li>
        </ul>
    </div>
{% endblock %}

{% if app.user %}
    {% block protected_body %}
        {{ block('conditional') }}
    {% endblock %}
{% else %}
     {% block body %}
        {{ block('conditional') }}
    {% endblock %}   
{% endif %}

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вам нужно поместить if в block, потому что блоки условий не являются чем-то вроде twig

{% block protected_body %}
    {% if app.user %}
        {{ block('conditional') }}
    {% endif %}
{% endblock %}
 {% block body %}
    {% if not app.user %}
        {{ block('conditional') }}
    {% endif %}
{% endblock %}  
0 голосов
/ 08 сентября 2018

Наконец, я уверен, что это невозможно. Возможно ограничение ветки.

Итак, я добавил это условие в контроллер и отрисовал шаблон или другое в зависимости от пользователя.

Внутри обоих шаблонов я добавил включение в общий шаблон.

С уважением, Jaime

...