Когда пользователь входит в представление настроек, оно отображает свою текущую информацию в полях ввода, которые можно редактировать, а затем сохранять. Тем не менее, я сталкиваюсь с небольшим препятствием, которое я не знаю, как избежать. Например:
Пользователь может захотеть изменить только 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();
}