我已经填充了我的权限表,以保存" pages.add"," pages.edit"等值。创建组时,我会在复选框中填充这些权限。在提交时,我遍历这些复选框的已发布值并将它们放在一个数组中。然后我以这种方式创建组:
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); }
我看到数组中已经填充了值。仍然哨兵不会在群组表中加载这些权限。怎么了?建议请。
答案 0 :(得分: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();
希望这有帮助。