Introduction
Toutes les routes et contrôleurs doivent retourner une réponse à envoyer au navigateur de l'utilisateur. Laravel fournit plusieurs façons différentes de retourner des réponses. La réponse la plus basique est de retourner une chaîne depuis une route ou un contrôleur :
Route::get('/', function () {
return 'Hello World';
});Vous pouvez également retourner des tableaux. Le framework convertira automatiquement le tableau en réponse JSON :
Route::get('/', function () {
return [1, 2, 3];
});Objets de réponse
Typiquement, vous ne retournerez pas seulement des chaînes ou tableaux simples. Au lieu de cela, vous retournerez des instances Illuminate\Http\Response complètes ou des vues :
Route::get('/home', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});Modèles et collections Eloquent
Vous pouvez également retourner des modèles et collections Eloquent directement depuis vos routes et contrôleurs :
use App\Models\User;
Route::get('/user/{user}', function (User $user) {
return $user;
});Attacher des en-têtes aux réponses
La plupart des méthodes de réponse sont chaînables :
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Valeur de l\'en-tête')
->header('X-Header-Two', 'Valeur de l\'en-tête');Ou utilisez la méthode withHeaders :
return response($content)
->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Valeur de l\'en-tête',
]);Attacher des cookies aux réponses
return response('Hello World')->cookie(
'name', 'value', $minutes);Redirections
Les réponses de redirection sont des instances de la classe Illuminate\Http\RedirectResponse :
Route::get('/dashboard', function () {
return redirect('home/dashboard');
});Rediriger vers la page précédente
Route::post('/user/profile', function () {
return back()->withInput();
});Rediriger vers des routes nommées
return redirect()->route('login');
return redirect()->route('profile', ['id' => 1]);Rediriger vers des actions de contrôleur
use App\Http\Controllers\UserController;
return redirect()->action([UserController::class, 'index']);Rediriger vers des domaines externes
return redirect()->away('https://www.google.com');Rediriger avec des données de session flashées
return redirect('dashboard')->with('status', 'Profil mis à jour !');Dans Blade :
@if (session('status'))
{{ session('status') }}
@endifAutres types de réponses
Réponses de vue
return response()
->view('hello', $data, 200)
->header('Content-Type', $type);Réponses JSON
return response()->json([
'name' => 'Abigail',
'state' => 'CA',
]);Téléchargements de fichiers
return response()->download($pathToFile);
return response()->download($pathToFile, $name, $headers);Téléchargements en streaming
return response()->streamDownload(function () {
echo GitHub::api('repo')
->contents()
->readme('laravel', 'laravel')['contents'];
}, 'laravel-readme.md');Réponses de fichiers
return response()->file($pathToFile);
return response()->file($pathToFile, $headers);Macros de réponse
Si vous souhaitez définir une réponse personnalisée réutilisable, utilisez la méthode macro :
use Illuminate\Support\Facades\Response;
Response::macro('caps', function (string $value) {
return Response::make(strtoupper($value));
});Référence
Pour plus d'informations, consultez la documentation Laravel par l'équipe Laravel.