2014-04-15 20 views
0

我已经填充了我的权限表以保存“pages.add”,“pages.edit”等值。创建组时,我在复选框中填充这些权限。提交时,我遍历这些复选框的发布值并将它们放入数组中。然后我这样创建组:使用Laravel中的Sentry动态添加权限

public function store(){ $ validation = new CreateGroupValidator;

if ($validation->passes()) { 
     try { 
      // Create the group 
      $permissions = Input::get('permissions'); 
      $pers=array(); 
      foreach($permissions as $p) 
      { 
       $pname=Permission::find($p)->name; 
       array_add($pers,$pname,'1'); 
      } 

      $group = Sentry::createGroup(array(
       'name'  => Input::get('name'), 
       'permissions' => $pers 
      )); 

      return Redirect::route('admin.groups.index'); 
     } 
     catch (\Cartalyst\Sentry\Groups\GroupExistsException $e) 
     { 
      Notification::error('A group with same name already exists.'); 
     } 
    } 

    return Redirect::back()->withInput()->withErrors($validation->errors); 
} 

我看到数值已经填充在数组中。仍然哨兵不会在组表中加载这些权限。怎么了?建议请。

回答

3

我如何用我的复选框,在HTML的样子:

<input type="checkbox" name="perms[page.edit]" value="1"> Allow 
<input type="checkbox" name="perms[page.add]" value="1"> Allow 

那么这就是我如何实现我的我的更新功能,但无论我的创建和更新使用类似的代码

$input = Input::get('perms'); 
$c = []; 
foreach ($input as $k => $p) { 
    $c[$k] = $p; 
} 
// Find the group using the group id 
$group = Sentry::findGroupById(1); 
// Update the group details 
$group->name = Input::get('name'); 
$group->permissions = $c; 
// Update the group 
$group->save(); 

希望这有助于。