2014-01-08 48 views
0

我正在創建一個幫助函數,以從user group數組中獲取name字段值。所以整個想法是通過函數參數如system_admin來傳遞值,並且會根據定義的用戶組通過切換獲取內容。CodeIgniter:從數組中獲取值

直到現在我已經完成了如下。我確信完成是糟糕的方式,但不知道如何使其工作。

功能

function admin_heading($groupname) 
{ 
    $CI =& get_instance();   
    $groups = $CI->ion_auth->groups()->result(); 

    foreach ($groups as $key => $value) 
    { 
     foreach ($value as $val => $result){ 
      echo $result . '<br/>'; 
     } 

    } 

    //return $groups; 
} 

如果我回到$組不是讓這個陣列

Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
      [name] => system_admin 
      [description] => System Administrator 
     ) 

    [1] => stdClass Object 
     (
      [id] => 2 
      [name] => admin 
      [description] => Administrator 
     ) 

    [2] => stdClass Object 
     (
      [id] => 3 
      [name] => HR 
      [description] => Human Resources 
     ) 

    [3] => stdClass Object 
     (
      [id] => 4 
      [name] => REC 
      [description] => Recruitment 
     ) 

    [4] => stdClass Object 
     (
      [id] => 5 
      [name] => TRA 
      [description] => Training 
     ) 

    [5] => stdClass Object 
     (
      [id] => 6 
      [name] => AMs 
      [description] => Account Managers 
     ) 

    [6] => stdClass Object 
     (
      [id] => 7 
      [name] => TLs 
      [description] => Team Leaders 
     ) 

    [7] => stdClass Object 
     (
      [id] => 8 
      [name] => FIN 
      [description] => Finance 
     ) 

    [8] => stdClass Object 
     (
      [id] => 9 
      [name] => FAC 
      [description] => Facilities 
     ) 

    [9] => stdClass Object 
     (
      [id] => 10 
      [name] => AHT 
      [description] => After Hours Transportation 
     ) 

    [10] => stdClass Object 
     (
      [id] => 11 
      [name] => member 
      [description] => Member 
     ) 

) 

通過呼應$結果得到以下結果

1 
system_admin 
System Administrator 
2 
admin 
Administrator 
3 
HR 
Human Resources 
4 
REC 
Recruitment 
5 
TRA 
Training 
6 
AMs 
Account Managers 
7 
TLs 
Team Leaders 
8 
FIN 
Finance 
9 
FAC 
Facilities 
10 
AHT 
After Hours Transportation 
11 
member 
Member 
1 

所以,最後的結果我想是例如

當我在功能admin_heading('system_admin')通過system_admin,如果在數據庫中存在system_admin組將檢查。如果存在,它將通過switch($var)傳入,並且我將在文件中包含將基於它調用的組名稱。

現在這種類型的條件碼第一次做,所以不知道是否有更好的方式比這個。所以如果有更好的方法,請學習我。我將不勝感激。


編輯

那麼究竟是什麼我期待的是

我要加載的文件/內容和標題爲每個用戶組。因此,例如,如果登錄用戶是system_admin它將自動檢查組並加載文件/內容和標題相應地與其他組相同。

注意:用戶也可能在多個組中,因此需要檢查較高的組並相應地加載內容。

我希望這會很容易理解。

+1

你已經很好地解釋了你的代碼。如果你解釋了你需要我們幫助的部分,那會更好。 – Roopendra

+0

@Roopendra對不起。你能檢查我編輯的問題部分嗎?非常感謝。 –

+0

感謝您的編輯。我有帖子的答案可能會幫助你。 – Roopendra

回答

1

我建議你應該在DB中保存排名。如果用戶有多個訪問權限(例如系統管理員,管理員),它將幫助 。

創建一個單獨的函數,它將檢查用戶組和返回用戶角色。

<?php 
function admin_heading($groupname) { 
    $userId = 101; // You can get login userid here. 
    $userRole = $this->checkUserRole($userId); 
    switch ($userRole) { 
     case 'administrator': 
      // Load heading for administrator. 
      break; 
     case 'hr': 
      // Load Heading for HR 
      break; 
     default: 
      // May ur default role :) 
      break; 
    } 
} 

function checkUserRole() { 
    $CI = & get_instance(); 
    //$userRole = '' 
    // Run a single query which will return user max group. 


    return $userRole; 
} 

我想你能夠獲取數據庫中的用戶詳細信息和角色。所以運行單個查詢到 得到用戶的更高角色,可能是你需要用你的角色表加入用戶表。