Fix routes shallow releves : Source ne peut pas être bindée sans {source} dans l'URL

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 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 19:29:49 +02:00
parent fe96bbdf6e
commit d38efaad60
+9 -7
View File
@@ -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)