Un contrôleur ou une route doit renvoyer une réponse au navigateur.
Laravel propose des mécanismes simples pour retourner divers formats : chaîne, tableau, vue, redirection, JSON, etc.
Retourner directement un modèle ou une collection Eloquent produit également une conversion automatique en JSON. Un pattern très utilisé pour créer rapidement des API.
route() évite d’écrire l’URL directement.
Pour ne pas devoir modifier le code si l’URL change, préférez les routes nommées.
// Nommer les routesRoute::get('/posts', [PostController::class, 'index'])->name('posts.index');Route::get('/posts/{post}', [PostController::class, 'show'])->name('posts.show');
// Redirection vers une route nomméereturn redirect()->route('posts.index');// Avec des paramètres de routereturn redirect()->route('posts.show', ['post' => $post->id]);
<?phpnamespace App\Http\Controllers;use App\Models\Post;use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\View\View;class PostController extends Controller{ // Liste : retourne une vue public function index(): View { $posts = Post::latest()->get(); return view('posts.index', ['posts' => $posts]); } // Formulaire de création : retourne une vue public function create(): View { return view('posts.create'); } // Enregistrement : retourne une redirection public function store(Request $request): RedirectResponse { // Création avec les données validées (via un form request) $post = Post::create($request->validated()); return redirect() ->route('posts.show', ['post' => $post->id]) ->with('success', 'Publication créée.'); } // Détail : retourne une vue public function show(Post $post): View { return view('posts.show', ['post' => $post]); } // Suppression : retourne une redirection public function destroy(Post $post): RedirectResponse { $post->delete(); return redirect() ->route('posts.index') ->with('success', 'Publication supprimée.'); }}
Dans une application web, le choix se fait généralement entre View et RedirectResponse. Les actions d’affichage renvoient une View, tandis que les actions de modification (création, mise à jour, suppression) renvoient une RedirectResponse après le traitement.