Php 无法更新表单数据
[![字段保留旧值][1][1] 在使用Laratrust设置角色和权限后,我正在尝试更新带有姓名、电子邮件和角色的表单, 我的用户控制器:Php 无法更新表单数据,php,laravel,insert-update,Php,Laravel,Insert Update,[![字段保留旧值][1][1] 在使用Laratrust设置角色和权限后,我正在尝试更新带有姓名、电子邮件和角色的表单, 我的用户控制器: public function update(Request $request, User $user) { dd($request->all()); // here Array of data is successfully updated $request->validate([ 'name'=>
public function update(Request $request, User $user)
{
dd($request->all()); // here Array of data is successfully updated
$request->validate([
'name'=>'required',
'email'=>'required|unique:users,email',
'role_id'=>'required|numeric',
]);
$user->update($request->all());
$user->syncRoles($request->role_id);
session()->flash('success','Data updated successfully');
return redirect()->route('dashboard.users.index'); //failed to redirect
} //end of Update Fn
My edit.blade有以下内容:
<form method="POST" action="{{route('dashboard.users.update', $user->id)}}">
@method('PUT')
我得到了以下错误:
ErrorException为foreach()提供的参数无效。
C:\xampp\htdocs\mynet\vendor\santigarcor\laratrust\src\Traits\LaratrustUserTrait.php:343请尝试以下代码:
public function update(Request $request, User $user)
{
$request->validate([
'name'=>'required',
'email'=>'required|unique:users,email',
'role_id'=>'required|numeric',
]);
$user->attachRole($request->role_id);
$user->update($request->all());
$user->refresh(); // Reload User or $user->load('roles');
session()->flash('success','Data updated successfully');
return redirect()->route('dashboard.users.index');
}
代码应为:
1-$user->attachRole($request->role\u id);ins上位函数
2-索引叶片应具有:
@foreach($user->roles as $role)
<h5>{{$role->name}}</h5>
@endforeach
public function update(Request $request, User $user)
{
$request->validate([
'name'=>'required',
'email'=>'required',
'role_id'=>'required|numeric',
]);
$user->name = $request->Name;
$user->email = $request->email;
$user->attachRole($request->role_id);
$user->update($request->all());
$user->refresh(); // Reload User or $user->load('roles');
session()->flash('success','Data updated successfully');
return redirect()->route('dashboard.users.index');
} //end of updates
@foreach($user->roles as$role)
{{$role->name}
@endforeach
公共功能更新(请求$Request,用户$User)
{
$request->validate([
'name'=>'required',
'电子邮件'=>'必需',
'role_id'=>'required | numeric',
]);
$user->name=$request->name;
$user->email=$request->email;
$user->attachRole($request->role\u id);
$user->update($request->all());
$user->refresh();//重新加载用户或$user->load('roles');
session()->flash('success','Data update successfully');
return redirect()->route('dashboard.users.index');
}//更新结束
您的r出现了什么错误。?没有出现错误,只有相同的视图具有相同的日期,没有更新,甚至重定向到未执行的索引。请检查操作路径您的dd(),如果工作路径与创建和删除一致,我没有找到任何调用更新()的路径
函数可以显示吗?我认为应该在syncRoles()函数中传递更新后的角色<代码>$roles=$user->getRoleNames()代码>$user->syncRoles($roles)代码>我必须删除这一行://$user->syncRoles($request->role\u id)//修改管理员,使姓名和电子邮件可以更新,但不能更新Role@Harbal我调用了未定义的方法App\User::getRoleNames()
@foreach($user->roles as $role)
<h5>{{$role->name}}</h5>
@endforeach
public function update(Request $request, User $user)
{
$request->validate([
'name'=>'required',
'email'=>'required',
'role_id'=>'required|numeric',
]);
$user->name = $request->Name;
$user->email = $request->email;
$user->attachRole($request->role_id);
$user->update($request->all());
$user->refresh(); // Reload User or $user->load('roles');
session()->flash('success','Data updated successfully');
return redirect()->route('dashboard.users.index');
} //end of updates