IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours pour apprendre à utiliser le framework Laravel 5.5

Les bases


précédentsommairesuivant

VI. Artisan et les contrôleurs

Nous avons vu le cycle d'une requête depuis son arrivée, son traitement par les routes et sa réponse avec des vues qui peuvent être boostées par Blade. Avec tous ces éléments vous pourriez très bien réaliser un site web complet mais Laravel offre encore bien des outils performants que je vais vous présenter.

Pour correctement organiser son code dans une application Laravel il faut bien répartir les tâches. Dans les exemples vus jusqu'à présent j'ai renvoyé une vue à partir d'une route, vous ne ferez jamais cela dans une application réelle (même si personne ne vous empêchera de le faire !). Les routes sont juste un système d'aiguillage pour trier les requêtes qui arrivent.

Mais alors qui s'occupe de la suite ?

Et bien ce sont les contrôleurs, le sujet de ce chapitre.

Nous allons aussi découvrir l'outil Artisan qui est la boîte à outils du développeur pour Laravel.

VI-A. Artisan

Lorsqu'on construit une application avec Laravel on a de nombreuses tâches à accomplir, comme par exemple créer des classes ou vérifier les routes.

C'est là qu'intervient Artisan, le compagnon indispensable. Il fonctionne en ligne de commande, donc à partir de la console. Il suffit de se positionner dans le dossier racine et d'utiliser la commande :

 
Sélectionnez
php artisan

pour obtenir la liste de ses possibilités, en voici un extrait :

Image non disponible

Nous verrons peu à peu les principales commandes disponibles. Il y en a une pour connaître les routes prévues dans le code. Voici ce que ça donne avec une nouvelle installation :

Image non disponible

On sait que la seule route au départ est celle-ci :

 
Sélectionnez
1.
2.
3.
Route::get('/', function () {
     return view('welcome');
 });

Elle correspond à la première ligne de la liste.

Mais à quoi correspond la seconde route ?

On a vu qu'il y a quatre fichiers de routes, en particulier on a celui pour les API :

Image non disponible

Lui aussi comporte une route par défaut :

 
Sélectionnez
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

On ne va pas s'y intéresser dans ce cours. Vous pouvez commenter ou supprimer cette route pour éviter de polluer la liste.

Je parlerai des middlewares dans un prochain chapitre.

VI-B. Les contrôleurs

VI-B-1. Rôle

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 :

Image non disponible

VI-B-2. Constitution

Pour créer un contrôleur nous allons utiliser Artisan. Dans la console entrez cette commande :

 
Sélectionnez
php artisan make:controller WelcomeController

Si tout se passe bien vous allez trouver le contrôleur ici :

Image non disponible

Avec ce code :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WelcomeController extends Controller
{
    //
}

Ajoutez la méthode index :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
...
class WelcomeController extends Controller
{
    public function index()
    {
        return view('welcome');
    }
}

Analysons un peu le code :

  • on trouve en premier l'espace de nom (App\Http\Controllers) ;
  • le contrôleur hérite de la classe Controller qui se trouve dans le même dossier et qui permet de factoriser des actions communes à tous les contrôleurs ;
  • on trouve enfin la méthode index qui renvoie quelque chose que maintenant vous connaissez : une vue, en l'occurrence « welcome » dont nous avons déjà parlé. Donc si j'appelle cette méthode je retourne la vue « welcome » au client.

VI-B-3. Liaison avec les routes

Maintenant la question qu'on peut se poser est : comment s'effectue la liaison entre les routes et les contrôleurs ?

Ouvrez le fichier des routes et entrez ce code :

 
Sélectionnez
Route::get('/', 'WelcomeController@index');

Maintenant avec l'URL de base vous devez retrouver la page d'accueil de Laravel :

Image non disponible

Voici une visualisation de la liaison entre la route et le contrôleur :

Image non disponible

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 @.

Si vous êtes attentif au code vous avez sans doute remarqué qu'au niveau de la route on ne spécifie pas l'espace de noms du contrôleur, on peut légitimement se demander comment on le retrouve. Laravel nous simplifie la syntaxe en ajoutant automatiquement cet espace de nom.

VI-B-4. 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 :

 
Sélectionnez
Route::get('/', 'WelcomeController@index')->name('home');

Si on utilise Artisan pour lister les routes :

Image non disponible

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.

VI-C. Utilisation d'un contrôleur

Voyons maintenant un exemple pratique de mise en œuvre d'un contrôleur. On va conserver notre exemple avec les articles mais maintenant traité avec un contrôleur. On conserve le même template et les mêmes vues :

Image non disponible

On va créer un contrôleur (entraînez-vous à utiliser Artisan) pour les articles :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use App\Http\Requests;
 
class ArticleController extends Controller
{
    public function show($n)
    {
        return view('article')->with('numero', $n);
    }
}

Dans ce contrôleur on a une méthode show chargée de générer la vue. Il ne nous reste plus qu'à créer la route :

 
Sélectionnez
Route::get('article/{n}', 'ArticleController@show')->where('n', '[0-9]+');

Voici une illustration du fonctionnement avec ce contrôleur :

Image non disponible

Notez qu'on pourrait utiliser la méthode « magique » pour la transmission du paramètre à la vue :

 
Sélectionnez
return view('article')->withNumero($n);

VI-D. En résumé

  • Les contrôleurs servent à réceptionner les requêtes triées par les routes et à fournir une réponse au client.
  • Artisan permet de créer facilement un contrôleur.
  • Il est facile d'appeler une méthode de contrôleur à partir d'une route.
  • On peut nommer une route qui pointe vers une méthode de contrôleur.‌

précédentsommairesuivant

Copyright © 2018 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.