2014-06-24 82 views
3

我有一個問題,Symfony2在樹枝中獲取用戶角色

我如何在Symfony2樹枝中獲得用戶角色。

我曾四處張望,但找不到它。

請幫幫忙,或線索..之前

感謝。

葉誠萬

+0

你使用像FOSUserBundle任何捆綁? – Mohebifar

+0

不,我使用symfony基本安全 – hendra1

+0

你可以在這裏找到答案。 http://stackoverflow.com/questions/7463650/accessing-the-logged-in-user-in-a-template – obomaye

回答

1

您可以訪問使用app.security.token整個安全令牌。 roles也是令牌的一個屬性。

{{ dump(app.security.token.roles) }} 
+0

當我嘗試它爲什麼返回值是這樣的:array(size = 0) – hendra1

+0

array(1){[0] => object(AppBundle \ Entity \ Role)#1067(3){[「id」:「 AppBundle \ Entity \ Role「:private] => int(3)[」name「:」AppBundle \ Entity \ Role「:private] => string(5)」admin「[」role「:」AppBundle \ Entity \ Role 「:private] => string(10)」ROLE_ADMIN「}} 這是我的輸出 –

+1

app.user.roles現在是(3.x)答案。 – RichieHH

5

您可以編寫一個樹枝擴展來完成此操作。

創建樹枝擴展並將其註冊爲服務。

  1. services.yml添加

    services: 
        cms.twig.cms_extension: 
        class: Path\To\RolesTwigExtension.php 
        tags: 
         - { name: twig.extension } 
        arguments: ["@service_container"] 
    
  2. RolesTwigExtension.php

    use Symfony\Component\Security\Core\User\UserInterface; 
    
    class RolesTwigExtension extends \Twig_Extension { 
        public function getFilters() { 
         return array(
          new \Twig_SimpleFilter('getRoles', [$this, 'getRoles']), 
         ); 
        } 
    
        public function getName() { 
         return 'roles_filter_twig_extension'; 
        } 
    
        public function getRoles(UserInterface $user) { 
         return $user->getRoles(); 
        } 
    } 
    
  3. 在您的枝杈文件:

    <ul> 
        {% for key, value in app.user|getRoles %} 
         <li>{{ value.name }}</li> 
        {% endfor %} 
    </ul> 
    
15

一個更簡單的選擇是測試中的作用,因爲你必須在security.yml定義它們:

{% if is_granted('ROLE_ADMIN') %} 
    Administrator 
{% elseif is_granted('ROLE_USER') %} 
    User 
{% else %} 
    Anonymous 
{% endif %} 
3

的Silex:

{{ dump(app.user.roles) }} 
array(1) { [0]=> string(9) "ROLE_USER" } 


{% if app.user is not null %} 
    {% for role in app.user.roles if role != 'ROLE_ADMIN' %} 
     {{ role }} //ROLE_USER 
    {% endfor %} 
{% endif %} 
0

您可以掃描用戶的您的收藏角色:

{% for role in app.user.roles %} 
 
{{ role }} <br> 
 
{% endfor %}