2014-10-09 20 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; 

避免多维数组的问题。乐叹。