2017-05-23 115 views
1

根據用戶是否登錄,如何在菜單數組中限制某些路徑?因爲我不想註冊選項卡,因爲用戶已經登錄了Symfony。登錄用戶的不同菜單

{% block header %} 
<div class="navbar navbar-inverse" role="navigation"> 
    <div class="blockMain"> 
     {% set mainMenu = [ 
     {'path': 'main',   'name': 'Home' }, 
     {'path': 'all',   'name': 'All' }, 
     {'path': 'TEST_test',  'name': 'TEST' }, 
     {'path': 'fos_user_profile_show', 'name': 'Profile' }, 
     {'path': 'fos_user_security_logout','name': 'logout'} 
     {'path': 'fos_user_security_login',   'name': 'Login' }, 
     {'path': 'fos_user_registration_register', 'name': 'Register' } 
     ] %} 

    <div class="navbar-collapse collapse"> 
     <ul class="nav navbar-nav"> 
     {% for item in mainMenu %} 
      <li{{ app.request.get('_route') == item['path'] ? ' class="active"' : '' }}> 
      <a href="{{ path(item['path']) }}">{{ item['name'] }}</a> 
      </li> 
     {% endfor %} 
     </ul> 
    </div><!--/.navbar-collapse --> 
    </div> 
</div> 
{% endblock %} 

回答

3

您可以檢查TWIG的作用:{% if is_granted("ROLE_USER") %}

{% block header %} 
<div class="navbar navbar-inverse" role="navigation"> 
    <div class="blockMain"> 

     {% if is_granted("ROLE_USER") %} 
      {% set mainMenu = [ 
       {'path': 'main',   'name': 'Home' }, 
       {'path': 'all',   'name': 'All' }, 
       {'path': 'TEST_test',  'name': 'TEST' }, 
       {'path': 'fos_user_profile_show', 'name': 'Profile' }, 
       {'path': 'fos_user_security_logout','name': 'logout'} 
      ] %}   
     {% else %} 
      {% set mainMenu = [ 
       {'path': 'main',   'name': 'Home' }, 
       {'path': 'fos_user_security_login',   'name': 'Login' }, 
       {'path': 'fos_user_registration_register', 'name': 'Register' } 
      ] %}   
     {% endif %} 

    <div class="navbar-collapse collapse"> 
     <ul class="nav navbar-nav"> 
     {% for item in mainMenu %} 
      <li{{ app.request.get('_route') == item['path'] ? ' class="active"' : '' }}> 
      <a href="{{ path(item['path']) }}">{{ item['name'] }}</a> 
      </li> 
     {% endfor %} 
     </ul> 
    </div><!--/.navbar-collapse --> 
    </div> 
</div> 
{% endblock %} 
+1

'{%如果app.user%}'檢查登錄的用戶,無論角色。請參閱https://stackoverflow.com/a/23612913/1751591 –