| Newsgroups |
php.notes |
| Message-ID |
<[email protected]> |
Voici comment gérer un formulaire en POST dans l'architecture MVC que tu étudies, en suivant l'exemple de la création d'un produit tel que décrit dans ton TD.
Le flux est le suivant : la Vue envoie les données au Contrôleur, qui utilise le Modèle pour enregistrer en base de données, puis le contrôleur affiche une vue de confirmation.
1. La Vue : Le Formulaire (addProduct.php)
C'est ici que l'utilisateur saisit les informations. Le formulaire pointe vers la route correspondante au contrôleur et à la méthode de traitement.
<form action="<?= CFG['siteURL'] ?>Product/addProduct" method="post">
<label>Nom : <input type="text" name="name" required></label>
<label>Prix : <input type="number" step="0.01" name="price" required></label>
<label>Quantité : <input type="number" name="quantity" required></label>
<button type="submit">Ajouter le produit</button>
</form>
2. Le Contrôleur : Le Traitement (Product.php)
La méthode addProduct() récupère les données du tableau superglobal $_POST, crée une entité et demande au dépôt (Repository) de l'enregistrer.
<?php
// app/controller/Product.php
namespace app\controller;
use app\model\entity\ProductEntity;
use app\model\repository\DbProductRepository;
class Product {
private $repository;
public function __construct() {
$this->repository = new DbProductRepository();
}
public function addProduct() {
// 1. Récupération des données du formulaire
$product = new ProductEntity();
$product->setName($_POST['name']);
$product->setPrice((float)$_POST['price']);
$product->setQuantity((int)$_POST['quantity']);
// 2. Appel du modèle pour la persistance
$newProduct = $this->repository->add($product);
// 3. Affichage du résultat (on passe l'objet à la vue)
if ($newProduct) {
require "view/displayProduct.php";
} else {
echo "Erreur lors de l'ajout.";
}
}
}
?>
----
Server IP: 206.189.2.9
Probable Submitter: 2001:660:7220:385:193:52:103:33
----
Manual Page -- https://php.net/manual/en/reserved.variables.post.php
Edit -- https://main.php.net/note/edit/130584
Del: integrated -- https://main.php.net/note/delete/130584/integrated
Del: useless -- https://main.php.net/note/delete/130584/useless
Del: bad code -- https://main.php.net/note/delete/130584/bad+code
Del: spam -- https://main.php.net/note/delete/130584/spam
Del: non-english -- https://main.php.net/note/delete/130584/non-english
Del: in docs -- https://main.php.net/note/delete/130584/in+docs
Del: other reasons-- https://main.php.net/note/delete/130584
Reject -- https://main.php.net/note/reject/130584
Search -- https://main.php.net/manage/user-notes.php