我希望模板在用户未登录时继承基本模板,并在用户登录时继承其他模板。
我尝试了几件事。其中一个显而易见的是这种尝试:
{% 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 %}
最后,我确信这是不可能的。也许是树枝的限制。
所以,我在控制器中添加了这个条件,并根据用户渲染模板或其他模板。
在这两个模板中,我添加了一个包含到一个通用模板。
此致,Jaime
你需要把你的if
放在block
里,因为条件块不是twig
中的东西
{% block protected_body %}
{% if app.user %}
{{ block('conditional') }}
{% endif %}
{% endblock %}
{% block body %}
{% if not app.user %}
{{ block('conditional') }}
{% endif %}
{% endblock %}