Laravel: how to redirect controller execution
web.php
:
Route::post('caption/{id}/delete', 'DetailController@deleteCaption');
DetailController.php
:
public function deleteCaption(Request $request, $id) {
$caption = Caption::findOrFail($id);
$caption->delete(); //doesn't delete permanently
return response(204);
}
admin.blade.php
:
<p value='{{$caption->id}}'>{{$caption->content}}</p>
<form action="caption/{{$caption->id}}/delete" method="post">
<button type="submit">Delete caption</button>
</form>
<form action="caption/{{$caption->id}}/approve" method="post">
<button type="submit">Accept caption</button>
</form>
I want to make it so that after deleting the image, the user is redirected back to the admin page located at localhost: 8000 / admin.
How can i do this? The documentation is not clear to me.
You can redirect like
public function deleteCaption(Request $request, $id) {
$caption = Caption::findOrFail($id);
$caption->delete(); //doesn't delete permanently
return redirect()->to('link/to/anywhere');
}
OR
You can redirect this like
return redirect()->back();
into your last state.
OR
return route('yourRouteName');
//if there parameters
return route('yourRouteName', ['id' => 1]);
You can just redirect your specific route to your web.php:
public function deleteCaption(Request $request, $id) {
$caption = Caption::findOrFail($id);
$caption->delete(); //doesn't delete permanently
return redirect('admin');
}
https://laravel.com/docs/5.4/responses#redirects
Checking routing protocols and blades can also help.
https://laravel.com/docs/5.4/routing
https://laravel.com/docs/5.4/blade
Since you want to return to the same page. You can use Laravel's restore feature.
return back();
To redirect the user back to the page they came from.
To redirect use back ==> return redirect () -> back ();
To redirect to using a specific route ==> return return redirect () → route ('route-name');