2012-05-06 21 views
9

में उपयोगकर्ता समूह नाम कैसे प्राप्त करें मैं जूमला 2.5 घटक लिख रहा हूं जिसे मैं जूमला 1.7 में विकसित कर रहा था। मैं इस तरह कोड का उपयोग किया गया है:जूमला 2.5

$user = JFactory::getUser(); 
$groups = $user->get('groups'); 

$ समूहों सरणी सूचकांक के रूप में समूह नाम के साथ आईडी की एक सूची शामिल होगा। ऐसा लगता है कि जूमला 2.5 ने इस कार्यक्षमता को तोड़ दिया है। मैं सीधे डेटाबेस से पूछताछ किए बिना समूह के नाम कैसे प्राप्त करने में असमर्थ हूं। क्या उन समूहों की सूची प्राप्त करने के लिए कोई तरीका है जो उपयोगकर्ता डेटाबेस से पूछताछ के बिना सहारा लेते हैं?

उत्तर

4

हां, यह changed

लेकिन क्या आप के बजाय का उपयोग करना चाहिए है:

JFactory::getUser()->getAuthorisedGroups(); 

या सिर्फ getUserGroups

+7

इन सभी मामलों के लिए में रुचि रखते हैं, मैं ने पाया है कि लौटा सरणी फॉर्म का है: ([0] => '1', [1] => '2')। उनमें समूह के नाम नहीं हैं। – nsimon

+1

अफसोस की बात है कि वे नाम नहीं रख सकते क्योंकि यह अद्वितीय होने के लिए बाध्य नहीं है। – Elin

1

संदेश यह है:

<?php 

    $user =& JFactory::getUser(); 

    foreach ($user->groups as $key => $value){ 
     echo $key.'<br>'; 
    } 

?> 

यह स्क्रीन करने के लिए सभी उपयोगकर्ता समूहों के नाम प्रिंट होगा। उपयोगकर्ता समूह के नाम सरणी $ user-> समूहों की "कुंजी" हैं।

+0

जो समूह आईडी को मुद्रित करता है, नाम नहीं। –

8

कोड मैं नीचे उत्पन्न सभी समूहों के नाम हो जाता है उपयोगकर्ता का एक हिस्सा और चर $ groupNames में उन्हें स्टोर लाइन से अलग है टूट जाता है:

foreach ($user->groups as $groupId => $value){ 
    $db = JFactory::getDbo(); 
    $db->setQuery(
     'SELECT `title`' . 
     ' FROM `#__usergroups`' . 
     ' WHERE `id` = '. (int) $groupId 
    ); 
    $groupNames .= $db->loadResult(); 
    $groupNames .= '<br/>'; 
} 
print $groupNames; 

यह तकनीकी रूप से डेटाबेस प्रश्नों लेकिन जूमला एपीआई के माध्यम से किया जाता है। यह जूमला 2.5 पर मेरे लिए अच्छा काम कर रहा है।

1

रियल टुकड़ा:

  $user = JFactory::getUser(); 
      $db = JFactory::getDBO(); 

    $db->setQuery($db->getQuery(true) 
     ->select('*') 
     ->from("#__usergroups") 
    ); 
    $groups=$db->loadRowList(); 

      $userGroups = $user->groups; 
      $return=array(); 

      foreach ($groups as $key=>$g){ 
      if (array_key_exists($g[0],$userGroups)) array_push($return,$g[4]); 
      } 

      $groups=$return; 

     /////printing groupnames for current user///////////// 
     print_r($groups); 
2

तुमने कहा था "मैं ने पाया है कि लौटे सरणी फार्म की है: ([0] => '1', [1] => '2') "

यह ठीक करने के लिए आपको नीचे दिखाए गए झूठी को शामिल करने की आवश्यकता है। ध्यान दें कि 43 उपयोगकर्ता आईडी है।

jimport('joomla.access.access'); 
$groups = JAccess::getGroupsByUser(43, false); 
print_r($groups); 

में अधिक विस्तृत जानकारी, संयोग से http://forum.joomla.org/viewtopic.php?t=530721

में पाया जा सकता है अगर आप QnA की तरह एक stackoverflow जूमला के लिए समर्थन कृपया http://area51.stackexchange.com/proposals/58842/joomla

+0

जो समूह आईडी को मुद्रित करता है, नाम नहीं। –

संबंधित मुद्दे