update profile method in laravel
//web.php
Route::post('update-profile',[App\Http\Controllers\HomeController::class,'updateProfile'])->name('update-profile');
//_controller.php
public function __construct()
{
$this->middleware('auth');
}
public function updateProfile(Request $request){
$request->validate([
"name" => "required|min:3|max:50",
"photo" => "nullable|file|mimes:jpeg,png|max:1000",
]);
$user = User::find(auth()->id());
$user->name = $request->name;
if($request->hasFile('photo')){
// delete old photo => path:storage/profile/profile_6221cecf36ad9.jpg
$subStrPhotoName = Str::substr($user->photo,16);
Storage::delete('public/profile/'.$subStrPhotoName);
// create new photo
$dir="storage/profile";
$newName = "profile_".uniqid().".".$request->file('photo')->extension();
$request->file('photo')->storeAs("public/profile",$newName);
$user->photo = $dir."/".$newName;
}
$user->update();
return redirect()->back();
}
//update.blade.php
|