Créer et utiliser un contrôleur Laravel

Créer et utiliser un contrôleur Laravel

  1. Objectifs

    • Etre capable d’utiliser les contrôleurs Laravel
  2. Qu’est-ce qu’un contrôleur ?

    • Dans le modèle MVC (modèle-vue-contrôleur), le contrôleur contient la logique concernant les actions effectuées par l’utilisateur. En pratique, dans une application Laravel, l’utilisation de contrôleurs permet de libérer les routes du code qu’elles contiennent dans leurs fonctions de rappel.
    • Un controller est une classe qui va contenir différentes méthodes. Chaque méthode correspondant généralement à une opération (URL) de votre application.
    • Un contrôleur est matérialisé par une classe et chacune de ses méthodes représente une action. Une action correspond généralement à une route.
    • Les contrôleurs sont une autre fonctionnalité essentielle fournie par Laravel. Au lieu de définir la logique de demande de traitement sous la forme de fermetures dans les fichiers de route, il est possible d’organiser ce processus à l’aide des classes Controller.
    • Un contrôleur est matérialisé par une classe et chacune de ses méthodes représente une action. Une action correspond généralement à une route.
    • Au lieu de définir la logique de réponse aux différents requêtes dans les fichiers du Routing comme on a vu dans les exemples précédents, il est recommandé d’organiser ces comportements dans des Controllers.
    • Les Controllers permettent de regrouper les logiques de réponse aux requêtes http reliées dans la même classe.



  3. Rôle d’un contrôleur

    • Créer et utiliser un contrôleur Laravel

    • La tâche d’un contrôleur est de réceptionner une requête (qui a déjà été sélectionnée par une route) et de définir la réponse appropriée, rien de moins et rien de plus. Voici une illustration du processus :
    • Les contrôleurs sont destinés à regrouper la logique de traitement des demandes associée dans une seule classe.
    • Dans votre projet Laravel, ils sont stockés dans le répertoire app/Http/Controllers.
    • La forme complète de MVC est Model View Controller, qui sert à diriger le trafic entre les vues et les modèles.
    • La tâche d’un contrôleur est de réceptionner une requête (qui a déjà été sélectionnée par une route) et de définir la réponse appropriée et la fournir au client.
    • Créer et utiliser un contrôleur Laravel

  4. Créer un contrôleur sous Laravel

    • Pour créer un contrôleur à partir de la fenêtre du terminal, ouvrez le terminal et changez le répertoire vers votre dossier racine laravel. Une fois que vous y êtes, vous pouvez exécuter l’une des commandes suivantes pour créer un contrôleur.
    • Artisan, l’outil en ligne de commande fourni avec Laravel, permet de créer rapidement un fichier contenant la structure de base d’un contrôleur.
    • Créer un simple contrôleur vierge
      • Pour créer un contrôleur vous pouvez directement entrer la commande : php artisan make:controller NomDeMonController
      • Créer et utiliser un contrôleur Laravel

      • Si tout se passe bien vous allez trouver le contrôleur ici :
      • Créer et utiliser un contrôleur Laravel

        Par convention, les contrôleurs sont en notation Camel Case et terminent tous avec le mot Controller. Cela permet de les différencier des services et des modèles auxquels ils font référence.

      • Dans l’exemple suivant nous nommerons notre controller ApprenantController.
      • Retournez dans votre dossier app/Http/Controllers, vous y trouverez votre nouveau controller. Nous allons ensuite créer une nouvelle méthode à notre Class ApprenantController que l’on nommera “apprenants”.
      • <?php
        namespace App\Http\Controllers;
        use Illuminate\Http\Request;
        class ApprenantController extends Controller
        {
            public function apprenants() {
                return view('/apprenants/index');
            }
        }
      • Maintenant nous devons faire le lien entre notre fichier web.php et notre Controller. Nous devons donc changer notre deuxième paramètre.
      • Route::get('/apprenants/index','App\Http\Controllers\ApprenantController@apprenants');
        
      • Par défaut, Laravel va chercher le contrôleur dans app\Http\Controllers. Nous spécifions également après le @, que la fonction à appeler est apprenants().
    • Créer un contrôleur complet de ressources avec les méthodes CRUD
      • php artisan make:controller NomDeMonController --resource

        <?php
        
        class sharkController extends BaseController {
        
            /**
                * Display a listing of the resource.
                *
                * @return Response
                */
            public function index()
            {
                //
            }
        
            /**
                * Show the form for creating a new resource.
                *
                * @return Response
                */
            public function create()
            {
                //
            }
        
            /**
                * Store a newly created resource in storage.
                *
                * @return Response
                */
            public function store()
            {
                //
            }
        
            /**
                * Display the specified resource.
                *
                * @param  int  $id
                * @return Response
                */
            public function show($id)
            {
                //
            }
        
            /**
                * Show the form for editing the specified resource.
                *
                * @param  int  $id
                * @return Response
                */
            public function edit($id)
            {
                //
            }
        
            /**
                * Update the specified resource in storage.
                *
                * @param  int  $id
                * @return Response
                */
            public function update($id)
            {
                //
            }
        
            /**
                * Remove the specified resource from storage.
                *
                * @param  int  $id
                * @return Response
                */
            public function destroy($id)
            {
                //
            }
        
        }
  5. Structure d’un contrôleur Laravel

    • Un contrôleur est une classe qui étend la classe de base Controller et dont chaque méthode publique représente généralement une action qui correspond à une route.
    • Fichier app/Http/Controllers/ApprenantController.php
    • <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class ApprenantController extends Controller
      {
          public function apprenants() {
              return view('/apprenants/index');
          }
          public function show($id){
             return view('apprenants.show', [
            'apprenant' => Product::find($id)
            ]);
          }
      }
    • Une méthode d’un contrôleur retourne une réponse, exactement comme dans les fonctions de rappels à propos des routes.
    • Dans l’exemple précédent, les méthodes apprenants et rechercher retournent une réponse sous la forme d’une vue , mais il aurait aussi bien pu s’agir chaîne de caractères ou d’un objet JSON.
  6. Liaison avec les routes

    • Liaison avec les routes
      • La figure suivante illustre une visualisation de la liaison entre la route et le contrôleur :
      • Créer et utiliser un contrôleur Laravel

      • On voit qu’au niveau de la route il suffit de désigner le nom du contrôleur et le nom de la méthode séparés par @.
      • La syntaxe à utiliser est NomDuController@action sous forme d’une chaîne de caractères.
      • Route::get('apprenants', 'ApprenantController@apprenants');
        Route::get('apprenants/{id}', 'ApprenantController@show');
    • Route nommée
      • De la même manière que nous pouvons nommer une route classique on peut aussi donner un nom à une route qui pointe une méthode de contrôleur :
      • Route::get('/', 'WelcomeController@index')->name('home');
      • Si on utilise Artisan pour lister les routes : php artisan route:list
      • On voit bien que l’action est faite par le contrôleur avec précision de la méthode à utiliser. On trouve aussi le nom de la route.
  7. Déplacer le code des fonctions de rappel des routes

    • Les routes sont généralement surchargées de code pour traiter les actions dans leurs fonctions de rappel.
    • L’objectif est de les libérer de ce code pour obtenir un fichier de routes propre qui fait simplement le lien entre les URI de l’application et les actions à effectuer pour chacune de ces URI.
    • Le fichier des routes routes/web.php est ainsi allégé, et devient un index des différentes URI avec leurs actions associées.
    • Exemple de fichier de routes sans fonction de rappel
    • Route::get('videos', 'VideoController@index');
      Route::get('videos/creer', 'VideoController@create');
      Route::post('videos/creer', 'VideoController@store');
      Route::get('videos/{id}', 'VideoController@show');



Laisser un commentaire

Abonnez vous à notre chaîne YouTube gratuitement