diff --git a/docs/build/dataservice-crud.md b/docs/build/dataservice-crud.md index e1d2836..1172033 100644 --- a/docs/build/dataservice-crud.md +++ b/docs/build/dataservice-crud.md @@ -24,6 +24,18 @@ Il est basé sur l'objet PDO de PHP. Le CRUD (Create, Read, Update, Delete) est un ensemble d'opérations de base pour la gestion des données dans une base de données. +### Schéma de la base de données + +Pour les exemples suivants, nous allons utiliser une table `user` avec les champs `id`, `name` et `email`. + +```sql +CREATE TABLE `user` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `name` VARCHAR(50) NOT NULL, + `email` VARCHAR(50) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 +``` + ### Create Pour créer un nouvel enregistrement dans la base de données, vous devez utiliser la méthode `insert` de la classe `DatabaseService`. @@ -32,7 +44,7 @@ Pour créer un nouvel enregistrement dans la base de données, vous devez utilis // Recupere l'object PHP PDO $comBase = DatabaseService::getConnect(); // Requete SQL -$statementPDO = $comBase->insert("INSERT INTO user (name, email) VALUES ('John Doe', 'ben@toto.fr')"); +$statementPDO = $comBase->query("INSERT INTO user (name, email) VALUES ('John Doe', 'ben@toto.fr')"); ``` ### Read diff --git a/docs/build/use-case-ville-refactor.md b/docs/build/use-case-ville-refactor.md index 8ec58c6..d123be1 100644 --- a/docs/build/use-case-ville-refactor.md +++ b/docs/build/use-case-ville-refactor.md @@ -37,7 +37,85 @@ villedelete: httpMethod: [GET] ``` -Vous devez maintenant changer les noms dans les fichiers de controller et de vue. +Et... aussi les appeler par leur nom ! En effet, vous pouvez dynamiquement les appeler par leur nom plutôt +que par leur uri. + +Le nom est affiché dans le fichier `app\Config\routes.yaml` + +Dans le fichier VilleCreateController.php, vous devez ajouter : + +```diff +getHttpMethod() === 'POST') { + $comBase = DatabaseService::getConnect(); + $statementPDO = $comBase->prepare("INSERT INTO ville (nom, code_postal, nombre_habitant) VALUES (:nom, :code_postal, :nb_habitant)"); + $statementPDO->execute([ + 'nom' => $request->get('nom'), + 'code_postal' => $request->get('code_postal'), + 'nb_habitant' => (int) $request->get('nombre_habitant') + ]); + +-- header('Location: /villeread'); +++ header('Location: ' . (new Route())->getNameToPath('villeread')); + } + + return TwigCore::getEnvironment()->render('villecreate/villecreate.html.twig', + [ + "titre" => 'VilleCreateController', + "request" => $request + ] + ); + } +} +``` + +Dans le fichier `villecreate.html.twig`, vous devez ajouter : + +```diff +{% extends "base.html.twig" %} + +{% block title %}{{ titre }}{% endblock %} + +{% block content %} +

{{ titre }}

+ +--
+++ +
+ + +
+
+ + +
+
+ + +
+ +
+ +{% endblock %} +``` + +Vous devez maintenant changer les noms dans les fichiers de controller et de vue. A vous de jouer ! > Vérifier en rejouant le CRUD de ville si les routes sont bien configurées. > {style="warning"} diff --git a/docs/build/use-case-ville.md b/docs/build/use-case-ville.md index fa27fff..6d24dec 100644 --- a/docs/build/use-case-ville.md +++ b/docs/build/use-case-ville.md @@ -293,6 +293,24 @@ php bin/edu make:controller villeUpdate Voici l'arborescence du projet : +``` hl_lines="7 12 13" + ├── app + │ ├── Config + │ │ └── routes.yaml + │ ├── Controller + │ │ ├── VilleCreateController.php + │ │ ├── VilleReadController.php + │ │ └── VilleUpdateController.php + │ └── Template + │ ├── base.html.twig + │ ├── villecreate + │ │ └── villecreate.html.twig + │ ├── villeupdate + │ │ └── villeupdate.html.twig + │ └── villeread + │ └── villeread.html.twig +``` + Pour modifier une ville, nous devons gérer sa modification via son idenfifiant (clé primaire). Dans notre use case, l'identifiant est ville.id.