has('phone')) { $cleanPhone = preg_replace('/\D/', '', $request->phone); $request->merge(['phone' => $cleanPhone]); } $data = $request->validate([ 'name' => 'required|string|max:255', 'phone' => 'nullable|digits:11', 'address' => 'required|string|max:255', 'url' => 'required|string|max:255', 'gps' => [ 'nullable', 'regex:/^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/' ], 'description' => 'nullable', ],[ 'phone.digits' => 'Номер телефона должен содержать 11 цифр.', 'gps.regex' => "Неверный формат GPS координат" ]); if ($request->has('gps')) { $data['gps'] = $this->convertGPS($request->gps); } Place::create($data); return redirect() ->route('places.index') ->with('status', 'Локация создана!'); } private function convertGPS(string $gps): string { return str_replace([',',' '], ['|',''], $gps); } public function edit(Place $place): VIEW { return view('places.edit', compact('place')); } public function update(Request $request, Place $place): Redirector|RedirectResponse { $data = $request->validate([ 'name' => 'required|string|max:255', 'lat' => 'required|numeric', 'lng' => 'required|numeric', ]); $place->update($data); return redirect() ->route('places.index') ->with('status', 'Обновлено!'); } public function delete(int $id): Redirector|RedirectResponse { $place = Place::findOrFail($id); $place->delete(); return redirect() ->route('places.index') ->with('status', 'Удалено!'); } }