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
)
- nom de la table (
-
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)
- ajouter un attribut (
-
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
- dans la méthode
-
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
... )
- dans la fonction
-
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 un nouveau champ (une input,
-
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)