validate([ 'title' => 'nullable|string|max:255', 'subtitle' => 'nullable|string|max:255', 'text' => 'nullable|string', 'image' => 'nullable|image|max:2048' ]); $data = MissionPage::first() ?? new MissionPage; $data->title = $request->title; $data->subtitle = $request->subtitle; $data->text = $request->text; $data->show_image = $request->has('show_image'); // Handle image upload or removal if ($request->hasFile('image')) { // Delete old image if ($data->image && file_exists(public_path($data->image))) { unlink(public_path($data->image)); } $imageName = time() . '.' . $request->image->getClientOriginalExtension(); $request->image->move(public_path('uploads/mission'), $imageName); $data->image = 'uploads/mission/' . $imageName; } elseif (!$request->has('show_image') && $data->image) { // Delete image if "show_image" is unchecked if (file_exists(public_path($data->image))) { unlink(public_path($data->image)); } $data->image = null; } $data->save(); return redirect()->back()->with('success', 'Mission Page saved successfully!'); } }