2014-01-10 89 views
1

我有一個應用程序,我一直在symfony中構建,我試圖只顯示用戶在某個頁面上的內容。我有一個if/else塊(如下所示),但內容仍顯示在頁面上,我不知道它是什麼。我這樣做是錯誤的嗎?如果else塊如果在特定頁面上顯示內容

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

所以它應該是每一個頁面,是不是/login頁面上顯示user-nav.html.twig

的。

+0

您是否使用特定的Twig文件作爲登錄頁面? –

+0

@ n.1是的我有一個單獨的樹枝文件的登錄。 – zachstarnes

+0

好吧,我添加了另一種解決方案,使用一個變量只在單獨的文件中定義登錄頁面,但我不會發布它,因爲其他答案適合你。 –

回答

1

的名稱在登錄頁面的嫩枝模板定義一個變量:

{% set hide_user_nav = true %} 

添加在您的佈局中測試此變量:

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

不幸的是,這並沒有工作。這段代碼位於'layout.html.twig'中,所有用戶頁面都擴展了這個佈局。會阻止它工作嗎? – zachstarnes

+0

這個dit不起作用,因爲用戶導航總是或永遠不會顯示? –

+0

它永遠不會顯示 – zachstarnes

1

像這樣的東西應該可以做到。這是未經測試的,但應該給你一個大概的想法。

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

這裏假設你的/login路由名稱是login,所以只需更換login與您的路線

+1

不幸的是,路線不是這樣命名的。例如,'/ login'的路由名稱是'fos_user_security_login' – zachstarnes

+0

,它不起作用。導航不會顯示在任何頁面 – zachstarnes

0

如果登錄頁面擴展包含該塊佈局頁面,那麼你可以只是把空

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

,將覆蓋父導航塊。