{{-- - Concept : meta tag csrf-token dans le head - A quoi ça sert : rendre le token CSRF accessible à JavaScript pour les futures requêtes AJAX - Fait quoi : expose le token en HTML -> pour un formulaire classique @csrf dans le form suffit, mais on le met ici par habitude en cas de besoin AJAX plus tard --}} CFA - Créer une enquête {{-- - Concept : chargement des assets via CDN - A quoi ça sert : éviter d'installer les dépendances localement (pas de npm ni de vendor/) - Fait quoi : charge Font Awesome (icônes), Nunito (police Google), et SB Admin 2 (thème Bootstrap) depuis des serveurs externes -> si un jour tu veux passer aux fichiers locaux : npm install startbootstrap-sb-admin-2 --}}
{{-- SIDEBAR --}} {{-- fin sidebar --}}
{{-- TOPBAR --}} {{-- fin topbar --}} {{-- CONTENU --}}

Créer une nouvelle enquête

Retour à la liste
{{-- - Concept : bloc d'erreurs de validation - A quoi ça sert : informer l'utilisateur des champs invalides après soumission du formulaire - Fait quoi : $errors est automatiquement rempli par Laravel si validate() échoue -> @foreach parcourt tous les messages et les affiche dans une liste --}} @if ($errors->any()) @endif
Nouvelle enquête
{{-- - Concept : action et method du formulaire HTML - A quoi ça sert : dire à Laravel où envoyer les données et avec quel verbe HTTP - Fait quoi : envoie les données en POST à la route enquete.store qui appelle EnqueteController@store -> pas de @method() ici car POST est le verbe natif HTML pour une création, pas besoin de le simuler --}}
{{-- - Concept : jeton CSRF (Cross-Site Request Forgery) - A quoi ça sert : sécuriser le formulaire contre les attaques externes qui tenteraient de soumettre des données à la place de l'utilisateur - Fait quoi : génère un champ caché _token avec une valeur unique que Laravel vérifie à la réception -> sans lui erreur 419 --}} @csrf
{{-- TITRE --}}
{{-- - Concept : old() et classe is-invalid - A quoi ça sert : conserver la saisie après une erreur de validation et indiquer visuellement le champ invalide - Fait quoi : old('titre') récupère la valeur tapée stockée en session flash si le formulaire a été soumis avec une erreur, sinon le champ est vide. @error('titre') ajoute is-invalid si Laravel a une erreur sur ce champ -> bord rouge --}} {{-- - Concept : invalid-feedback - A quoi ça sert : afficher le message d'erreur sous le champ - Fait quoi : caché par défaut, s'affiche uniquement si le champ parent a la classe is-invalid -> $message contient le texte défini par les règles de validation Laravel --}} @error('titre')
{{ $message }}
@enderror
{{-- PUBLIC CIBLE --}}
{{-- - Concept : select avec @selected() - A quoi ça sert : laisser l'utilisateur choisir le public cible et recocher la bonne option après une erreur de validation - Fait quoi : les value="" doivent correspondre exactement à ce que la BDD attend. @selected() est une directive Blade (Laravel 9+) qui compare old() avec chaque option et met selected sur la bonne --}} @error('public_cible')
{{ $message }}
@enderror
{{-- DESCRIPTION --}}
{{-- - Concept : textarea et old() - A quoi ça sert : saisir un texte long et conserver la saisie après erreur - Fait quoi : contrairement à un input, le contenu d'un textarea va entre les balises ouvrante et fermante et pas dans value="" -> old('description') remet le texte tapé si erreur de validation --}} @error('description')
{{ $message }}
@enderror
{{-- DATE DEBUT --}}
{{-- - Concept : input type="date" et old() - A quoi ça sert : saisir une date avec le calendrier natif du navigateur et conserver la valeur après une erreur - Fait quoi : old('date_debut') remet la date saisie si le formulaire a été soumis avec une erreur de validation --}} @error('date_debut')
{{ $message }}
@enderror
{{-- DATE FIN --}}
{{-- - Concept : input type="date" avec attribut min= - A quoi ça sert : empêcher de choisir une date de fin antérieure à la date de début sans JS - Fait quoi : min= prend la valeur de date_debut et grise automatiquement les dates antérieures dans le calendrier natif du navigateur -> le HTML le fait tout seul --}} @error('date_fin')
{{ $message }}
@enderror
{{-- STATUT --}}
{{-- - Concept : select avec valeurs contraintes - A quoi ça sert : ça sert à choisir le statut parmi une liste fixe cohérente avec ce que la BDD et le controller attendent - Ca fait quoi : les value="" doivent être identiques au in: de la validation -> 'statut' => 'required|in:en_cours,non_demarree,terminee' si les valeurs ne correspondent pas exactement, Laravel rejette même si c'est visuellement correct --}} @error('statut')
{{ $message }}
@enderror
{{-- - Concept : champ caché id_user - A quoi ça sert : associer l'enquête à un utilisateur sans laisser l'utilisateur modifier cette valeur depuis le formulaire - Fait quoi : envoie id_user=1 en BDD -> quand l'auth sera branchée remplace 1 par auth()->id() pour prendre l'id de l'user connecté --}}
{{-- - Concept : lien d'annulation - A quoi ça sert : permettre à l'utilisateur de revenir sans soumettre - Fait quoi : simple lien GET vers l'index -> pas besoin de form pour une navigation, contrairement à logout ou delete --}} Annuler
{{-- fin container-fluid --}}
{{-- fin #content --}}
{{-- fin #content-wrapper --}}
{{-- fin #wrapper --}} {{-- - Concept : modal de déconnexion - A quoi ça sert : confirmer la déconnexion avant de l'exécuter - Fait quoi : affiche une boîte de dialogue Bootstrap, le bouton confirmer soumet un form POST car la déconnexion modifie la session -> un simple lien GET ne suffit pas et serait non sécurisé --}} {{-- - Concept : ordre de chargement des scripts - A quoi ça sert : garantir que chaque librairie est disponible avant que la suivante s'en serve - Fait quoi : jQuery doit être chargé en premier car Bootstrap en a besoin, Bootstrap ensuite, SB Admin 2 en dernier car il dépend des deux -> inverser l'ordre casse les modals, la sidebar, etc. --}}