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 %} +