我在 Laravel 5.5 中使用 Laratrust 包,我制作了一个页面来创建具有角色和权限的用户。这运行良好,但问题出在我的更新页面上。我无法更新权限的值,我不知道为什么。这是我的更新页面代码:public function update(Request $request, User $user){ $request_data = User::find(1); $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', ]); $request_data=$request->except(['permissions']); $user->update($request_data); $user->syncPermissions($request->permissions); return redirect('dashboard/index');}这是我的编辑刀片页面:<form class="m-form m-form--fit m-form--label-align-right m-form--group-seperator" method="post" action="{{ url('dashboard/update/users',$user->id) }}"> {{ csrf_field() }} {{ method_field('put') }} <div class="m-portlet__body"> <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> <label for="name" class="col-md-4 control-label">Name</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" value="{{ $user->name }}" required autofocus> @if ($errors->has('name')) <span class="help-block"> <strong>{{ $errors->first('name') }}</strong> </span> @endif </div> </div>
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
您可以删除 role_permission 的记录,然后附加新的权限
$user->syncPermissions($request->permissions);
如果包中没有任何方法更新值,这可能对您有所帮助
holdtom
TA贡献1805条经验 获得超10个赞
首先,看看这一行:
$request_data = User::find(1);
我不确定为什么会出现这种情况 - 您在验证后立即重新定义它。建议去掉。
权限更新的问题可能在于您构建 sync() 方法的方式。这是我习惯看到的方式:
$user->permissions()->sync($request->get('permissions', []));
[] 是可选的,但试试看是否有帮助。
另外,我不确定$request
对象的权限来自哪里。也许您没有将它包含在上面的代码片段中,但我没有看到它在刀片文件中的分配位置。因此,我的答案中的上述更新代码(Laravel 标准而不是包格式)至少应该有效 - 如果permissions
表单上确实没有字段来更改权限,它应该恢复为无权限
- 2 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消