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:
@@ -49,27 +49,28 @@ class ReleveController extends Controller
|
|||||||
->with('success', 'Relevé ajouté.');
|
->with('success', 'Relevé ajouté.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(Source $source, Releve $releve): View
|
public function show(Releve $releve): View
|
||||||
{
|
{
|
||||||
$this->authorize('view', $releve);
|
$this->authorize('view', $releve);
|
||||||
|
|
||||||
$source->load('sourceType.fields');
|
$source = $releve->source->load('sourceType.fields');
|
||||||
$releve->load('createur', 'modificateur');
|
$releve->load('createur', 'modificateur');
|
||||||
|
|
||||||
return view('releves.show', compact('source', 'releve'));
|
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);
|
$this->authorize('update', $releve);
|
||||||
|
|
||||||
$source->load('sourceType.fields');
|
$source = $releve->source->load('sourceType.fields');
|
||||||
|
|
||||||
return view('releves.edit', compact('source', 'releve'));
|
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);
|
$data = $this->buildData($request->validated()['data'] ?? [], $source);
|
||||||
|
|
||||||
$releve->update([
|
$releve->update([
|
||||||
@@ -77,14 +78,15 @@ class ReleveController extends Controller
|
|||||||
'updated_by' => $request->user()->id,
|
'updated_by' => $request->user()->id,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->route('sources.releves.show', [$source, $releve])
|
return redirect()->route('releves.show', $releve)
|
||||||
->with('success', 'Relevé mis à jour.');
|
->with('success', 'Relevé mis à jour.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(Source $source, Releve $releve): RedirectResponse
|
public function destroy(Releve $releve): RedirectResponse
|
||||||
{
|
{
|
||||||
$this->authorize('delete', $releve);
|
$this->authorize('delete', $releve);
|
||||||
|
|
||||||
|
$source = $releve->source;
|
||||||
$releve->delete();
|
$releve->delete();
|
||||||
|
|
||||||
return redirect()->route('sources.releves.index', $source)
|
return redirect()->route('sources.releves.index', $source)
|
||||||
|
|||||||
Reference in New Issue
Block a user