条件模板继承在Symfony 4中不起作用

问题描述 投票:0回答:2

我希望模板在用户未登录时继承基本模板,并在用户登录时继承其他模板。

我尝试了几件事。其中一个显而易见的是这种尝试:

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

其他尝试:

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

等等......没有任何作用。始终使用base.html.twig。

当我显示{{app.user}}值时,会显示正确的值(如果登录或未登录,则为用户名或空)

有任何想法吗?

编辑:

这是我需要有条件的完整模板,具体取决于用户是否登录。

{% 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 %}
twig extends symfony4
2个回答
0
投票

最后,我确信这是不可能的。也许是树枝的限制。

所以,我在控制器中添加了这个条件,并根据用户渲染模板或其他模板。

在这两个模板中,我添加了一个包含到一个通用模板。

此致,Jaime


0
投票

你需要把你的if放在block里,因为条件块不是twig中的东西

{% block protected_body %}
    {% if app.user %}
        {{ block('conditional') }}
    {% endif %}
{% endblock %}
 {% block body %}
    {% if not app.user %}
        {{ block('conditional') }}
    {% endif %}
{% endblock %}  
© www.soinside.com 2019 - 2024. All rights reserved.