我有一个我在symfony中构建的应用程序,我试图只在用户在某个页面上时显示内容。我有一个if / else块(如下所示),但内容仍显示在页面上我不是它也是如此。我这样做是错误的吗?
if else块
{% block nav %}
{% set uri = app.request.uri %}
{% if uri != 'login' %}
{% include "StarnesUserBundle::user-nav.html.twig" %}
{% endif %}
{% endblock %}
所以它应该在不是user-nav.html.twig
页面的每个页面上显示/login
。
答案 0 :(得分:1)
这样的事情应该可以解决问题。这是未经测试的,但应该给你一个大致的想法。
{% block nav %}
{% if app.request.attributes.get('_route') != 'login' %}
{% include "StarnesUserBundle::user-nav.html.twig" %}
{% endif %}
{% endblock %}
这假设您的/login
路由名称为login
,因此只需将login
替换为您的路由名称
答案 1 :(得分:1)
在登录页面的Twig模板中定义一个变量:
{% set hide_user_nav = true %}
在布局中为此变量添加测试:
{% if (hide_user_nav is not defined) %}
{% block nav %}
{% include "StarnesUserBundle::user-nav.html.twig" %}
{% endblock %}
{% endif %}
答案 2 :(得分:0)
如果登录页面扩展了包含该块的布局页面,那么你可以放一个空的
{% block nav %}{% endblock nav %}
将覆盖父导航块。