Php 在特定页面上显示内容

Php 在特定页面上显示内容,php,html,symfony,Php,Html,Symfony,我有一个应用程序,我一直在symfony建设,我试图只显示内容时,用户在某一页上。我有一个if/else块(如下所示),但内容仍然显示在页面上,我也不知道它是什么。我这样做不对吗 if-else块 {% block nav %} {% set uri = app.request.uri %} {% if uri != 'login' %} {% include "StarnesUserBundle::user-nav.html.twig" %} {% en

我有一个应用程序,我一直在symfony建设,我试图只显示内容时,用户在某一页上。我有一个if/else块(如下所示),但内容仍然显示在页面上,我也不知道它是什么。我这样做不对吗

if-else块

{% block nav %}
    {% set uri = app.request.uri %}
    {% if uri != 'login' %}
        {% include "StarnesUserBundle::user-nav.html.twig" %}
    {% endif %}
{% endblock %}

因此,它应该在不是
/login
页面的每个页面上显示
用户nav.html.twig

类似的东西应该可以实现这一点。这是未经测试的,但应该给你一个大致的想法

{% block nav %}
    {% if app.request.attributes.get('_route') != 'login' %}
        {% include "StarnesUserBundle::user-nav.html.twig" %}
    {% endif %}
{% endblock %}

这假设您的
/login
路线名称为
login
,因此只需将
login
替换为路线名称即可

在登录页面的细枝模板中定义一个变量:

{% set hide_user_nav = true %}
在布局中添加此变量的测试:

{% if (hide_user_nav is not defined) %}
    {% block nav %}
        {% include "StarnesUserBundle::user-nav.html.twig" %}
    {% endblock %}
{% endif %}

如果登录页面扩展了包含此块的布局页面,那么您可以只放置一个空的

{% block nav %}{% endblock nav %}

这将覆盖父导航块。

不幸的是,这些路线不是这样命名的。例如,“/login”的路由名称是
fos\u user\u security\u login
您是否在登录页面使用特定的细枝文件?@n.1是的,我有一个单独的细枝文件用于登录。好的,我添加了另一个解决方案,使用仅在登录页面的单独文件中定义的变量,但是我不会发布它,因为另一个答案对你有用。@n.1事实上,我认为它有用,但不起作用。请发布请显示如何从登录页面和另一个随机页面包含布局。不幸的是,这不起作用。这段代码位于
layout.html.twig
中,所有用户页面都扩展了此布局。这会阻止它工作吗?此dit不工作,因为用户导航始终显示或从未显示?它从未显示奇怪的是,它应该始终显示,除非定义了
hide\u user\u nav
,如果不使用
{%set=…%}
,这将永远不会发生。是否清除了缓存?