Les formulaires avec Laravel
Publié le par Benjamin Crozat
Temps de lecture estimé : 2 minutes
Être capable de récolter l’entrée d’un utilisateur sur un site web est primordial. Il y a tout un tas de cas d’usages pour ça :
- L’authentification d’un utilisateur ;
- Un panneau d’administration qui permet de poster des articles ;
- Poster des commentaires ;
- Etc.
Afin d’être capable de suivre ce tutoriel, je vous recommande d’être au point avec les routes en allant lire “Le routing avec Laravel : créez votre première route”.
Création des routes
Dans routes/web.php, créons la route permettant d’afficher le formulaire.
On utilisera la méthode Route::view()
, permettant de directement lier une vue à une page. Pourquoi ? Cela nous permet d’écrire moins de code. Donc, plutôt que d’écrire ceci :
Route::get('/mon-super-formulaire', function () { return view('mon-super-formulaire');});
On écrira ça :
Route::view('/mon-super-formulaire', 'mon-super-formulaire');
Ensuite, déclarons la route permettant de traiter les données envoyées par l’utilisateur à travers le formulaire. La particularité, c’est que le navigateur doit envoyer une requête POST à notre site. Nous allons donc faire en sorte que la route réponde à cette méthode HTTP :
Route::post('/mon-super-formulaire', function () { // C'est ici qu'on écrira le code.});
Création de la vue Blade
Nous avons déjà créé la route permettant d’afficher le contenu de la vue mon-super-formulaire. Mais jusqu’à maintenant, elle renvoyait une erreur car elle n’existait pas. Corrigeons ça sans attendre.
touch resources/views/mon-super-formulaire.blade.php
Dans ce nouveau fichier, ajoutez le code Blade suivant :
<form {{-- Notez l'utilisation de "POST". --}} method="POST" action="/mon-super-formulaire"> {{-- La directive "csrf" permet de se protéger des attaques CSRF. Il s'agit d'un très vaste sujet, alors partons du principe qu'elle est requise dans chacun de vos formulaires. --}} @csrf <input type="text" name="nom" /> <button type="submit"> Envoyer </button></form>
Traitement et affichage des données
Déterminons ce qui nous reste à faire pour la route vide définie ci-dessous :
- Récupérer les données ;
- Valider les données ;
- Afficher les données.
Par “données”, comprenez “nom de notre utilisateur”.
// Cette fois, on utilise la méthode HTTP "POST".Route::post('/traitement-de-mon-super-formulaire', function () { // Assurons-nous que ce que saisi l'utilisateur : // - N'est pas vide ; // - Fait plus de 3 caractères ; // - Ne fait pas plus de 255 caractères. // // Signalons au passage que l'utilisateur a saisi "Homer" dans le formulaire. $input = request()->validate([ 'nom' => ['required', 'min:3', 'max:255'], ]); // Pour terminer, on affiche "Bonjour, Homer !"; return 'Bonjour, ' . $input['nom'] . ' !';});
Après ça, l’idéal serait d’ajouter l’attribut required
dans le champ du formulaire afin d’avoir une validation aussi bien dans le front-end que le back-end :
<input type="text" name="nom" required />
Il est désormais impossible d’envoyer le formulaire sans l’avoir rempli avant. Nous avons maintenant un formulaire parfaitement fonctionnel.
À vous maintenant de l’intégrer dans un vrai projet si ça vous chante, d’utiliser les contrôleurs, les custom requests et je ne sais quelle autre des nombreuses fonctionnalités de Laravel.
0 commentaire
Inscrivez-vous ou connectez-vous d'abord.