我正在使用Laravel 5.6,并将以系统管理员的身份更新我的用户表值(name
,email
,password
)。
刀片文件
<form action="{{route('users.update',$user->id)}}" method="POST">
{{method_field('PUT')}}
{{csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" value="{{$user->name}}" >
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control" id="email" name="email" value="{{$user->email}}">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password">
</div>
<div class="form-group">
<label for="password_confirmation">Confirm Password</label>
<input type="password" class="form-control" id="password_confirmation" name="password">
</div>
<button type="submit" class="btn btn-primary">Edit User</button>
</form>
和我的控制器
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->name = $request->name;
$user->uservalue = $request->uservalue;
$user->email = $request->email;
$user->password = bcrypt($request->input('password'));
$user->save();
return view('users.show')->withUser($user);
}
问题
我的密码确认不起作用
这意味着我可以输入密码而无需确认和/或输入错误的确认密码。我该如何解决这个问题?
答案 0 :(得分:0)
您必须添加密码以确认验证。为此,您的第二个密码字段必须称为password_confirmation(或foo和foo_confirmation)
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$request->validate([
'password' => 'sometimes|min:6|confirmed'
]);
$user->name = $request->name;
$user->uservalue = $request->uservalue;
$user->email = $request->email;
$user->password = bcrypt($request->input('password'));
$user->save();
return view('users.show')->withUser($user);
}
您可以按照here的说明添加更多验证字段。如果验证失败,浏览器将把用户带回到更新页面。这些错误在您的视图中以$errors
的形式出现在laravel错误包中。
sometimes
表示如果有输入,则需要遵循以下规则。当您要更新用户信息时,如果访问者不想更新密码,可以将密码字段留空。在更新用户输入之前,请取消设置密码字段(如果为空)。