在特定页面上显示内容

时间:2014-01-10 20:54:03

标签: php html symfony

我有一个我在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

3 个答案:

答案 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 %}

将覆盖父导航块。