Tutoriel pour apprendre à créer une application Laravel Le contact Par Maurice
Tutoriel pour apprendre à créer une application Laravel Le contact Par Maurice Chavelli Date de publication : 28 novembre 2017 Ce cours fait partie d'une série de tutoriels qui se charge de vous apprendre à créer une application avec Laravel. À travers ce cours, vous allez apprendre à gérer le formulaire de contact. Commentez Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli I - Introduction..............................................................................................................................................................3 II - Le statut................................................................................................................................................................. 3 III - Le formulaire......................................................................................................................................................... 5 III-A - Affichage.......................................................................................................................................................5 III-B - Traitement.....................................................................................................................................................6 IV - L'administration..................................................................................................................................................... 8 IV-A - Le tableau de bord...................................................................................................................................... 8 IV-B - Affichage des messages........................................................................................................................... 10 IV-C - Marquer le message..................................................................................................................................12 IV-D - Supprimer le message.............................................................................................................................. 13 V - Remerciements....................................................................................................................................................14 - 2 - Copyright ® 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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. http://maurice-chavelli.developpez.com/tutoriels/creer-application/le-contact/ Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli I - Introduction Pour comprendre comment est organisée l'application je vais prendre quelque chose de simple : le formulaire de contact auquel le visiteur accède à partir du menu : Nous allons suivre le cheminement de la requête à partir du clic sur l'option du menu, jusqu'à l'enregistrement du message et nous verrons ensuite la gestion de ce message par l'administrateur. Cela donnera une vision globale de l'application. II - Le statut Le menu s'adapte automatiquement selon que l'on a un simple visiteur, un utilisateur connecté, un rédacteur ou un administrateur. On ne va évidemment pas proposer un formulaire de contact à ces deux dernières catégories. Comment cela est-il géré ? Regardons le code de cet item dans la vue resources/views/front/template.blade.php : 1. @if(session('statut') == 'visitor' || session('statut') == 'user') 2. <li {!! Request::is('contact/create') ? 'class="active"' : '' !!}> 3. {!! link_to('contact/create', trans('front/site.contact')) !!} 4. </li> 5. @endif On a dans la session une clé statut qui informe sur le statut. Ici, on teste si on a un simple visiteur ou un utilisateur de base. Dans les deux cas on fait apparaître l'option. D'autre part on lui ajoute la classe active si la requête correspond à cet item, pour le distinguer dans le menu. Pour gérer le statut on a un service (app/Services/Statut.php) : 1. <?php namespace App\Services; 2. 3. use Auth; 4. 5. class Statut { 6. 7. /** 8. * Set the login user statut - 3 - Copyright ® 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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. http://maurice-chavelli.developpez.com/tutoriels/creer-application/le-contact/ Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli 9. * 10. * @param App\Models\User $user 11. * @return void 12. */ 13. public function setLoginStatut($user) 14. { 15. session()->put('statut', $user->role->slug); 16. } 17. 18. /** 19. * Set the visitor user statut 20. * 21. * @return void 22. */ 23. public function setVisitorStatut() 24. { 25. session()->put('statut', 'visitor'); 26. } 27. 28. /** 29. * Set the statut 30. * 31. * @return void 32. */ 33. public function setStatut() 34. { 35. if(!session()->has('statut')) 36. { 37. session()->put('statut', Auth::check() ? Auth::user()->role->slug : 'visitor'); 38. } 39. } 40. 41. } Lorsqu'une requête arrive le middleware App est activé. On y trouve le déclenchement d'un événement : event('user.access'); Or la méthode setStatut du service écoute cet événement : 1. protected $listen = [ 2. ... 3. 'user.access' => ['App\Services\Statut@setStatut'] 4. ]; On définit alors le statut dans cette méthode. On a aussi besoin de définir le statut lorsque quelqu'un se connecte, ce qui est réalisé dans la méthode setLoginStatut. Et finalement on doit aussi fixer le statut de visiteur en cas de déconnexion, ce qui est réalisé par la méthode setVisitorStatut. Ces deux méthodes écoutent les événements correspondants : 1. protected $listen = [ 2. 'auth.login' => ['App\Services\Statut@setLoginStatut'], 3. 'auth.logout' => ['App\Services\Statut@setVisitorStatut'], 4. ... 5. ]; - 4 - Copyright ® 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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. http://maurice-chavelli.developpez.com/tutoriels/creer-application/le-contact/ Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli III - Le formulaire III-A - Affichage La route contact/create aboutit à la fonction create du contrôleur ContactController : 1. /** 2. * Show the form for creating a new resource. 3. * 4. * @return Response 5. */ 6. public function create() 7. { 8. return view('front.contact'); 9. } Ici on se contente de retourner la vue du formulaire. Notez qu'aucun middleware ne protège cette fonction, ce qui serait vraiment superflu. La vue est bien rangée dans le dossier du front-end : Avec ce code : 1. @extends('front.template') 2. 3. @section('main') 4. <div class="row"> 5. <div class="box"> 6. <div class="col-lg-12"> 7. <hr> 8. <h2 class="intro-text text-center">{{ trans('front/contact.title') }}</h2> 9. <hr> 10. <p>{{ trans('front/contact.text') }}</p> 11. 12. {!! Form::open(['url' => 'contact', 'method' => 'post', 'role' => 'form']) !!} 13. 14. <div class="row"> 15. 16. {!! Form::control('text', 6, 'name', $errors, trans('front/contact.name')) !!} 17. {!! Form::control('email', 6, 'email', $errors, trans('front/contact.email')) !!} - 5 - Copyright ® 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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. http://maurice-chavelli.developpez.com/tutoriels/creer-application/le-contact/ Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli 18. {!! Form::control('textarea', 12, 'message', $errors, trans('front/contact.message')) !!} 19. {!! Form::text('address', '', ['class' => 'hpet']) !!} 20. 21. {!! Form::submit(trans('front/form.send'), ['col-lg-12']) !!} 22. 23. </div> 24. 25. {!! Form::close() !!} 26. 27. </div> 28. </div> 29. </div> 30. @stop Le formulaire est simplifié grâce à l'utilisation de quelques extensions du FormBuilder (ce que nous verrons dans un article ultérieur). Notez la présence d'un champ qui peut vous sembler inutile : {!! Form::text('address', '', ['class' => 'hpet']) !!} C'est en fait un pot de miel masqué par la classe hpet pour piéger les robots. En effet ceux-ci ont tendance à remplir tous les champs. On va donc vérifier à la soumission si ce champ a été complété. Si c'est le cas, on ne va pas aller plus loin dans le traitement du formulaire. Ceci s'effectue dans la classe de base App\Http\Requests\Request : 1. <?php namespace App\Http\Requests; 2. 3. use Illuminate\Foundation\Http\FormRequest; 4. 5. abstract class Request extends FormRequest { 6. 7. public function authorize() 8. { 9. // Honeypot 10. return $this->input('address') == ''; 11. } 12. 13. } Comme toutes les requêtes de formulaire héritent de cette classe on va donc appliquer le pot de miel à l'ensemble du site. III-B - Traitement Lorsque le formulaire est soumis on aboutit à la méthode store du contrôleur ContactController : 1. /** 2. * Store a newly created resource in storage. 3. * 4. * @param App\Repositories\ContactRepository $contact_gestion 5. * @param ContactRequest $request 6. * @return Response 7. */ 8. public function store( 9. ContactRepository $contact_gestion, 10. ContactRequest $request) 11. { 12. $contact_gestion->store($request->all()); 13. 14. return redirect('/')->with('ok', trans('front/contact.ok')); 15. } - 6 - Copyright ® 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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. http://maurice-chavelli.developpez.com/tutoriels/creer-application/le-contact/ Tutoriel pour apprendre à créer une application Laravel par Maurice Chavelli On voit que l'on injecte une requête de formulaire pour la validation (App\Http\Requests\ContactRequest). Voici le code de cette requête : 1. <?php namespace App\Http\Requests; 2. 3. class ContactRequest extends Request { 4. 5. /** 6. * Get the validation rules that apply to the request. 7. * 8. * @return array 9. */ 10. public function rules() 11. { 12. return [ 13. 'name' => 'required|max:100', 14. 'email' => 'required|email', 15. 'message' => 'required|max:1000' 16. ]; 17. } 18. 19. } On réclame tous les champs et on impose quelques contraintes. On injecte aussi dans la méthode un repository (App\Repositories\ContactRepository). C'est la méthode store qui est chargée d'enregistrer le contact dans la base : 1. /** 2. * Store a contact. 3. * 4. * @param array $inputs 5. * @return void 6. */ 7. public function store($inputs) 8. { 9. $contact = new $this->model; 10. 11. $contact->name = $inputs['name']; 12. $contact->email = $inputs['email']; 13. $contact->text = $inputs['message']; 14. 15. $contact->save(); 16. } J'aurais pu utiliser la méthode create pour alléger le code, mais j'aime bien détailler les entrées. Quand le message a été mémorisé, le contrôleur renvoie sur la page d'accueil avec un uploads/s1/ creer-une-application-le-contact-pdf.pdf
Documents similaires










-
102
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 02, 2022
- Catégorie Administration
- Langue French
- Taille du fichier 0.3615MB