我试图让它成为一些管理员可以决定哪个角色可以做什么,从前端轻松,但我有点卡住了。我尝试过几种不同的东西,但到目前为止都没有。
到目前为止我已尝试过这个:
@foreach($role as $role)
{!! Form::model($permission, [
'method' => 'PATCH',
'url' => 'settings/permissionsUpdate',
]) !!}
<br />
{{$role->name}}
<br />
<input type="hidden" name="role_id" value="{{ $role->id }}" />
@foreach($permission as $perm)
<select name="permissions[ {{ $perm->id }} ]">
<option value="1">Allowed</option>
<option value="0">Not Allowed</option>
</select>
<br />
{{$perm->name}}
<br />
@endforeach
{!! Form::submit('Save Settings', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
@endforeach
这是我的数据库
Permission_role
* id
* Role_id
* Permmission_id
Permission
* id
* Name
* Slug
* Description
Roles
* id
* Name
* Slug
* Description
Role_user
* id
* role_id
* user_id
和控制器
public function permissionsUpdate(Request $request)
{
$allowed_permissions = [];
foreach($request->input('permissions') as $permission) {
if ($permission == 1) {
$allowed_permissions[] = $permission;
}
$role = Role::find($request->input('role_id'));
$role->permissions()->sync($allowed_permissions); //Currently gives error
$role->save();
}
}
我得到了错误 调用未定义的方法Illuminate \ Database \ Query \ Builder :: syncPermission()。
模型 作用:
public function permissions()
{
return $this->hasMany('permissions');
}
权限
public function PermissionsRole()
{
return $this->hasMany('App\PermissionRole', 'role_id', 'id');
}
但我必须承认我在失地的情况下升职。我需要附加和取消对角色的权限,并且无法弄清楚如何执行此操作
我似乎仍然无法弄明白这一点,我不确定我是如何附加或取消用户的权限。
更新:
到目前为止,我已经尝试了这个,但我已经接近但仍有一些问题。我遇到了我的模型出错的问题,它尝试查找表role_role,所以我将其更改为
public function permissions()
{
return $this->belongsToMany('App\permission'); (Had to make a new model called permisson, because when i used permissions it looked for role_permissions and it is called role_permission, but the table alone is called permissions, bit confsuing there)
}
这几乎使它工作,但它只改变第一个值(1)即使所有都被允许它只附加等于1的permissons_id然后角色id等于正确的role_id,如果我请求它似乎使用permission_id = 1,2,3,4等获取所有正确的数据,但在此之后它出错了。此外,视图仍然显示从开始时是否允许。 Coulndt让它发挥作用,我尝试了类似的东西:
<option value="1" {{ @ifUserCan($perm->slug) ? 'selected="selected"' : null }} >Allowed</option>
<option value="0" {{ @ifUserCan($perm->slug) ? null : 'selected="selected"' @endif }}>Not Allowed</option>
但是,你不能这样做。