首页 > 解决方案 > 如何忽略更新方法中没有数据的输入

问题描述

我有一个表格来更新用户数据名称、电子邮件和用户名。问题是如果用户只想更新用户,我如何保持相同的电子邮件和名称或仅更改名称在我的情况下验证需要所有输入这是我的控制器

public function update(Request $request, $username )
{
    if($username != Auth::user()->username){
        return abort('401');
    }

    $request->validate([

        'name' => 'min:10|max:50|required',
        'username' => 'unique:users|max:30|min:3|required',
        'email' => 'email|unique:users|max:200|required',

    ]);
    $checkuserindb = User::findOrFail(Auth::user()->id);

    $checkuserindb->update([
        'name' => $request->name,
        'username' => $request->username,
        'email' => $request->email
    ]);
    return redirect()->route('userProfile', $request->username)->with('message', 'your account has been updated!');
}

标签: phplaravel-5

解决方案


在您的输入字段中,只需添加来自数据库的实际值,如下所示:

<input type="text" name="name" value="{{$user->name}}">
<input type="text" name="username" value="{{$user->username}}">
<input type="email" name="email" value="{{$user->email}}">

还使用“有时”规则并更新您想要的任何字段:

'name'     => 'min:10|max:50|sometimes',
'username' => 'unique:users|max:30|min:3|sometimes',
'email'    => 'email|unique:users|max:200|sometimes', 

推荐阅读