繁体   English   中英

如何在laravel中使用密码确认更新现有用户表值

[英]how to update existing user table values with password confirmtion in laravel

我正在使用Laravel 5.6,并将以系统管理员身份更新我的用户表值( nameemailpassword )。

刀片文件

<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);
}

问题

我的密码确认不起作用

这意味着我可以输入密码而无需确认和/或输入错误的确认密码。 我该如何解决这个问题?

您必须添加密码以确认验证。 为此,您的第二个密码字段必须称为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);
}

您可以按照此处的说明添加更多验证字段。 如果验证失败,浏览器将把用户带回到更新页面。 错误在laravel errorbag​​中,在您的视图中为$errors

sometimes意味着,如果有输入,则需要遵循以下规则。 当您要更新用户信息时,如果访问者不想更新密码,可以将密码字段留空。 在更新用户输入之前,请取消设置密码字段(如果为空)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM