【发布时间】:2018-05-13 21:24:56
【问题描述】:
当用户进入设置视图时,视图会在输入字段中显示他们当前的信息,这些信息可以被编辑然后保存。但是,我面临一个小障碍,我不知道如何避免。例如:
例如,用户可能只想编辑 1 个字段,例如用户名,但是,他必须更改他的电子邮件,否则他会收到一条消息,表明该电子邮件已被使用,这是真的,该电子邮件已被同一用户使用。此外,即使不需要密码字段,他也会收到一条消息,提示密码必须至少为 5 个字符,如果我删除该验证,用户将能够添加空密码。
我只是想这样做,这样我就可以只编辑 1 个字段而无需更改其余字段。
这是我的观点,允许人们更改他们当前的帐户信息:
<form method="post" action="{{ route('updateProfile', $user) }}" enctype="multipart/form-data">
<input type="text" name="first_name" value="{{ $user->first_name }}" />
<input type="text" name="last_name" value="{{ $user->last_name }}" />
<input type="text" name="username" value="{{ $user->username }}" />
<input type="email" name="email" value="{{ $user->email }}" />
<input type="password" name="password" />
<input type="password" name="password_confirmation" />
<input type="file" name="file" />
{{ csrf_field() }}
{{ method_field('patch') }}
<button class='Submit' type="submit" name="submit">Save Changes</button>
</form>
这是我的 profileUpdate 函数:
public function updateProfile(Request $request, User $user){
$this->validate($request, [
'first_name' => 'max:120',
'last_name' => 'max:120',
'username' => 'max:120',
'email' => 'email|unique:users',
'password' => 'min:5|max:12|confirmed',
'file' => 'max:1999'
]);
$file = $request->file('file')->getClientOriginalName();
$fileName = pathinfo($file, PATHINFO_FILENAME);
$extension = $request->file('file')->getClientOriginalExtension();
$fileNameToStore = $fileName.'_'.time().'.'.$extension;
$fileNameToStore = str_replace(' ', '', $fileNameToStore);
$path = $request->file('file')->storeAs('public/uploads/profile_pictures/', $fileNameToStore);
$user->first_name = request('first_name');
$user->last_name = request('last_name');
$user->username = request('username');
$user->email = request('email');
$user->password = bcrypt(request('password'));
$user->profile_picture = $fileNameToStore;
$user->save();
return back();
}
【问题讨论】: