2014-10-09 46 views
0

我試圖圍繞我在Sentry中的權限和數組。當我對它們進行硬編碼時,我已經讓它們工作,這很容易,但是從表單中分配它們證明是非常令人沮喪的。這裏是處理它的函數:Laravel/Sentry從表格中分配組權限

public function postGroup(){ 
    $name = Input::get('name'); 
    $inputs = Input::except('name'); 
    $permissions = array("self.view" => 1, "self.update" => 1); 
    foreach($inputs as $key => $value) 
    { 
     $raw_name = $key; 
     $name = str_replace('_', '.', $raw_name); 
     array_push($permissions, array($name => 1)); // The issue is here. 
    } 
... 

基本上,我們現在有一個數組$permissions[user.create] => 1, [user.view] => 1等等等等從形式傳遞每個權限。接下來,使用Sentry::createGroup我需要根據此數組設置權限。

//Create the group 
     $group = Sentry::createGroup(array(
     'name'  => $name, 
     'permissions' => $permissions //Doesn't work. 

));

當我檢查我的數據庫,我看到:

{"self.view":1,"self.update":1,"0":1,"1":1} 

應該是這樣的:

{"self.view":1,"self.update":1,"user.create":1,"user.view":1} 

因此,我們可以看到那些self.*做工精細,但因爲我打電話給array_push($permissions, array($name => 1));我在製作$permissions是一個多維數組(因此我們爲什麼在數據庫中看到"0":1;它在看索引,但我不是100%確定如何解決這個問題...

因此,深入瞭解陣列處理和Sentry權限會很有幫助。在此期間我會繼續嘗試。

在此先感謝!

回答

1

我是一個白癡...這是一個非常簡單的答案。替換:

array_push($permissions, array($name => 1)); // The issue is here. 

與(我怎麼也不敢相信簡單,這是)

$permissions[$name] = 1; 

避免多維數組的問題。樂嘆。