【问题标题】:Conditional template inheritance does not work in Symfony 4条件模板继承在 Symfony 4 中不起作用
【发布时间】:2023-03-11 09:19:01
【问题描述】:

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

我尝试了几件事。显而易见的尝试之一是:

{% 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


    【解决方案1】:

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

    因此,我在控制器中添加了该条件,并根据用户呈现模板或其他内容。

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

    问候, 詹姆

    【讨论】:

      【解决方案2】:

      您需要将if 放在block 中,因为twig 中没有条件块

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

      【讨论】:

        猜你喜欢
        • 2021-01-10
        • 1970-01-01
        • 2011-02-04
        • 2012-11-29
        • 2021-12-10
        • 2017-09-07
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多