From d38efaad60a7b9c123aa7825d55bb498af35905a Mon Sep 17 00:00:00 2001 From: yann64 Date: Fri, 5 Jun 2026 19:29:49 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20routes=20shallow=20releves=20:=20Source?= =?UTF-8?q?=20ne=20peut=20pas=20=C3=AAtre=20bind=C3=A9e=20sans=20{source}?= =?UTF-8?q?=20dans=20l'URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avec ->shallow(), show/edit/update/destroy deviennent /releves/{releve}. Le contrôleur bindait Source $source depuis la route (introuvable) → Laravel l'instanciait vide via DI → id null → route() échouait dans la vue. Correction : charger $source via $releve->source dans les 4 actions shallow. Redirect update() corrigé : releves.show (shallow) et non sources.releves.show. Co-Authored-By: Claude Sonnet 4.6 --- app/Http/Controllers/ReleveController.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/ReleveController.php b/app/Http/Controllers/ReleveController.php index 271ebfb..40a349c 100644 --- a/app/Http/Controllers/ReleveController.php +++ b/app/Http/Controllers/ReleveController.php @@ -49,27 +49,28 @@ class ReleveController extends Controller ->with('success', 'Relevé ajouté.'); } - public function show(Source $source, Releve $releve): View + public function show(Releve $releve): View { $this->authorize('view', $releve); - $source->load('sourceType.fields'); + $source = $releve->source->load('sourceType.fields'); $releve->load('createur', 'modificateur'); return view('releves.show', compact('source', 'releve')); } - public function edit(Source $source, Releve $releve): View + public function edit(Releve $releve): View { $this->authorize('update', $releve); - $source->load('sourceType.fields'); + $source = $releve->source->load('sourceType.fields'); return view('releves.edit', compact('source', 'releve')); } - public function update(UpdateReleveRequest $request, Source $source, Releve $releve): RedirectResponse + public function update(UpdateReleveRequest $request, Releve $releve): RedirectResponse { + $source = $releve->source->load('sourceType.fields'); $data = $this->buildData($request->validated()['data'] ?? [], $source); $releve->update([ @@ -77,14 +78,15 @@ class ReleveController extends Controller 'updated_by' => $request->user()->id, ]); - return redirect()->route('sources.releves.show', [$source, $releve]) + return redirect()->route('releves.show', $releve) ->with('success', 'Relevé mis à jour.'); } - public function destroy(Source $source, Releve $releve): RedirectResponse + public function destroy(Releve $releve): RedirectResponse { $this->authorize('delete', $releve); + $source = $releve->source; $releve->delete(); return redirect()->route('sources.releves.index', $source)