Créer une classe liée à "Card" - PRJG5/gmi GitHub Wiki

Voici une liste des différentes étapes à faire pour créer un objet / une classe dont la classe "Card" dépend.

L'oubli d'une de ces étapes peut un bon paquet d'erreurs (c'est déjà arrivé, plus moyen de créer une nouvelle carte, exceptions dues aux contraintes d'intégrité, échecs des test unitaires, etc..) donc faites bien TOUTES les étapes !

  • Créer votre classe (app\VotreClasse)

    • nom de la table ($table)
    • clef primaire ($primaryKey)
    • auto-incrément pour la clef primaire ($incrementing)
    • type de la clef primaire ($keyType)
    • timestamps ($timestamps)
    • mutateurs ($attributes)
    • attribut d'assignement de masse ($fillable) ou attributs gardés ($guarded)
  • Modifier (compléter) la classe "Card"

    • ajouter un attribut ($attributes) et lui donner une valeur par défaut
    • ajouter cet attribut aux éléments d'assignement de masse si éditable ou aux éléments gardés (si non-éditables)
  • Créer un contrôleur (app\Http\Controllers\VotreClasseController)

    • implémentation des méthodes CRUD
    • fonction de validation des données (que vous utiliserez dans votre contrôleur avant de créer un objet)
  • Modifier (compléter) le contrôleur de la classe "Card"

    • dans la méthode store(), créer votre nouvel objet à partir des résultats de la requête ($request) et le stocker dans la base de données
    • dans la méthode show(), aller chercher les objets dans la base de données dont la carte à besoin et passer l'objet en paramètre
    • dans la méthode edit(), récupérer votre objet dans la base de données, le modifier et le sauvegarder
    • dans la fonction de validation des données (fin du fichier), vérifier votre champ
  • Créer une factory (database\factories\VotreClasseFactory)

  • Créer un fichier de migration (database\migrations\heure_create_VotreClasse_table)

  • Modifier (compléter) le fichier de création de la classe "Card"

    • dans la fonction up(), lui donner un type
    • lui donner un modificateur (unique, nullable, utf8, etc..) si besoin
    • lui donner une valeur par défaut si besoin
    • ajouter la contrainte d'intégrité vers la fin de la fonction (foreign -> references -> on ... )
  • Créer un fichier de seeder (database\seeds\VotreClasseSeeder)

  • Modifier (compléter) le fichier "DatabaseSeeder" pour "activer" le seed de votre table

  • Modifier (compléter) le fragment de vue avec votre champs (resources\views\card\show.blade.php)

    • créer un nouveau champ (une input, <input />)
    • lui donner un nom (name=""), une classe (class=""), un type (type=""), un placeholder (placeholder="") et un titre (title="")
    • lui donner aussi une valeur si la carte est vue ou modifiée, mais pas quand elle est créée
    • si le champ est obligatoire pour créer / modifier une fiche, ajouter "required"
    • si la carte n'est ni crée ni modifiée (seulement en vue), ajouter "disabled" pour empêcher d'écrire dedans
    • ajouter un label (<label>) au-dessus de votre input
    • relier votre label à votre input (for="")
  • Créer vos tests unitaires

  • Modifier (compléter) tous les tests unitaires de la classe "Card"

    • ajouter votre attribut lors de la création
    • vérifier que votre attribut a bien été enregistré à la bonne valeur
    • etc...

Ne pas oublier, une fois toutes les étapes faites, de vider votre cache avec

php artisan cache:clear
php artisan route:cache
php artisan config:clear
php artisan view:clear
composer dump-autoload

et de recréer la base de données (pour ajouter la nouvelle colonne à la table Card qui est probablement déjà générée).

Vérifier avant de merge sur le master que tous les tests passent et que vous n'avez pas plus cassé le build qu'il ne l'était avant ! (Il est déjà arrivé que quelqu'un ait modifié du code, commit et merge sans vérifier si tout marchait, résultat: build cassé)

Pour toute question, demander à @BrandtMatthieu (44422)

⚠️ **GitHub.com Fallback** ⚠️