Objectifs
Présentation
- Un contrôleur laravel peut contenir différentes méthodes. Chaque méthode peut avoir l' argument $ request comme paramètre de fonction par défaut. Il s'agit essentiellement d'un objet de requête contenant vos variables de formulaire, vos données de session ou vos informations de cookie.
- Une méthode de contrôleur peut répondre via différents types de réponse, certains d'entre eux sont mentionnés ci-dessous:
- Texte brut
- Json Array
- Vue HTML ou blade
- XML
- Téléchargement de fichier
- Sortie PDF ou image sur navigateur directement etc ...
Exemple de rendu de texte brut
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function exemple() { return "Hello, Mohamed SALAH"; } }Rendre un fichier de vue blade situé dans le dossier resources/views
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { return view("dashboard"); } }Rendre le tableau en tant que tableau json ou json
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { // render array as json return [1, 2, 3]; // render json array return response()->json([ "name" => "Sandip Patel" ]); } }Rendre un texte avec des en-têtes supplémentaires
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { return response('Hello World', 200) ->header('Content-Type', 'text/plain'); return response($content) ->header('Content-Type', $type) ->header('X-Header-One', 'Header Value1') ->header('X-Header-Two', 'Header Value2'); } }Rendre un fichier ou un pdf
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { // render a file directly on broswer // i.e. image or pdf file return response()->file($pathToFile); } }Télécharger le fichier de rendu
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { // download a file with given path return response()->download($pathToFile); // download a file with given path with different name and // pass some extra headers along with the new file name return response()->download($pathToFile, $name, $headers); // delete the file once download completes return response()->download($pathToFile)->deleteFileAfterSend(); } }Redirection vers des URL internes ou externes
<? php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { function example() { // redirect to last page with // submitted form data return back()->withInput(); // redirect to user/dashboard page return redirect('user/dashboard'); // redirect with named route return redirect()->route('login'); // redirect with named route by passing variables return redirect()->route('profile', ['id' => 1]); // redirect to specific controller method return redirect()->action('HomeController@index'); // redirect to external url return redirect()->away('https://www.google.com'); // redirect with flash session message return redirect('dashboard')->with('success', 'Profile updated!'); } }