{{-- - 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 - Modifier 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 - Concept : classe "active" sur le bon
  • - A quoi ça sert : indiquer visuellement à l'utilisateur sur quelle section il se trouve - Fait quoi : SB Admin 2 met le fond blanc et le texte coloré sur le lien de la page en cours --}} {{-- fin sidebar --}}
    {{-- TOPBAR --}} {{-- fin de la topbar --}} {{-- CONTENU --}}

    Modifier une 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 via redirect()->back()->withErrors() -> @foreach parcourt tous les messages et les affiche --}} @if ($errors->any()) @endif {{-- - Concept : message flash de succès - A quoi ça sert : confirmer à l'utilisateur que la modification s'est bien passée - Fait quoi : le controller glisse un message en session avec redirect()->with('success', '...'), Blade le récupère avec session('success') et l'affiche une seule fois -> Laravel détruit automatiquement la clé après affichage, le message ne réapparaît pas au rechargement --}} @if (session('success')) @endif
    Modifier l'enquête #{{ $enquete->id_enquete }}
    {{-- - Concept : action, method POST et @method('PUT') - A quoi ça sert : envoyer les données au controller pour mettre à jour l'enquête existante en BDD - Fait quoi : HTML ne supporte pas PUT nativement -> on envoie POST et on glisse un champ caché _method=PUT que Laravel intercepte pour savoir que c'est un update. @csrf est obligatoire sinon erreur 419 --}}
    @csrf @method('PUT')
    {{-- TITRE --}}
    {{-- - Concept : old() avec valeur de secours BDD - A quoi ça sert : pré-remplir le champ avec la valeur existante et conserver la saisie après une erreur de validation - Fait quoi : deux cas possibles -> 1. si le form a été soumis avec une erreur, old() remet ce que l'utilisateur avait tapé (stocké en session flash) 2. si on arrive sur la page normalement (GET), old() est vide -> le 2e argument prend le relais : la valeur en BDD. @error('titre') ajoute is-invalid si erreur -> 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() et valeur BDD - A quoi ça sert : pré-sélectionner la bonne option et recocher la bonne option après une erreur de validation - Fait quoi : les value="" doivent correspondre exactement à ce que la BDD attend. @selected() compare old() ou la valeur BDD avec chaque option et met selected sur la bonne --}} @error('public_cible')
    {{ $message }}
    @enderror
    {{-- DESCRIPTION --}}
    {{-- - Concept : textarea avec old() et valeur BDD - A quoi ça sert : pré-remplir la description existante et conserver la saisie après une erreur de validation - Fait quoi : contrairement à un input, le contenu d'un textarea va entre les balises et pas dans value="" -> old() d'abord, BDD sinon --}} @error('description')
    {{ $message }}
    @enderror
    {{-- DATE DEBUT --}}
    {{-- - Concept : input type="date" avec substr() sur la valeur BDD - A quoi ça sert : pré-remplir la date existante et conserver la valeur après une erreur de validation - Fait quoi : MySQL renvoie "2026-03-11 00:00:00" mais type="date" attend "2026-03-11" -> substr(..., 0, 10) garde uniquement les 10 premiers caractères, sinon le champ serait vide --}} @error('date_debut')
    {{ $message }}
    @enderror
    {{-- DATE FIN --}}
    {{-- - Concept : input type="date" avec attribut min= et substr() - A quoi ça sert : pré-remplir la date existante et empêcher de choisir une date antérieure à la date de début - Fait quoi : min= prend la valeur de date_debut et grise automatiquement les dates antérieures dans le calendrier natif -> pas besoin de JS. substr() pour les mêmes raisons que date_debut --}} @error('date_fin')
    {{ $message }}
    @enderror
    {{-- STATUT --}}
    {{-- - Concept : select avec valeurs contraintes et @selected() - A quoi ça sert : pré-sélectionner le statut actuel et le recocher après une erreur de validation - 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 : renvoyer l'id de l'utilisateur associé sans laisser l'utilisateur modifier cette valeur depuis le formulaire - Fait quoi : renvoie l'id existant en BDD pour ne pas l'écraser -> sans ce champ, id_user serait null après la mise à jour --}}
    Annuler Enquête #{{ $enquete->id_enquete }} — user #{{ $enquete->id_user }}
    {{-- 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. --}}