Interaction avec la base de données
Objet "demande de devis"
Lorsque nous voulons créer un objet, nous avons 3 fichiers à créer :
- Le model qui permet de gérer un objet en lui-même
- La resource qui sera appelée par Magento pour modifier ou récupérer les informations en base de données
- La collection qui est un ensemble d'objets
Nous allons donc créer ces 3 fichiers pour notre objet "demande de devis", qu'on appellera quoterequest :
- Le model :
Formation_Test_Model_Quoterequest - La resource :
Formation_Test_Model_Resource_Quoterequest - La collection :
Formation_Test_Model_Resource_Quoterequest_Collection
Créer ces 3 fichiers en s'inspirant du Model Cms_Page :
- Vos classes doivent étendre les mêmes classes
- Ne copier que la fonction
_construct()et remplacer avec la bonne valeur. Le deuxième paramètre de la fonction_initde la resource est le nom de la colonne en auto-increment de la table - Dans la collection, ne garder que la première ligne de
mapet remplacerpage_idpar le nom de la colonne en auto-increment de votre table
Une fois que c'est fait, nous allons tester que notre model fonctionne.
Dans le fichier header.phtml, ajouter le code suivant :
Mage::getModel('formation_test/quoterequest')
->setName('Nom client')
->setEmail('client@example.com')
->setMessage('Je voudrais un devis svp')
->setTelephone('0102030405')
->save();
Si tout est ok, cela devrait vous créer une nouvelle entrée dans la table formation_test_quote_request à chaque fois que vous affichez une page.
TP - Terminer notre formulaire de demande de devis
- Créer une nouvelle action qui récupère le post du formulaire
- Nous pouvons récupérer les donner en post dans un controller via
// Tout le POST
$this->getRequest()->getParams();
// Un paramètre en particulier
$this->getRequest()->getParam('nom_du_param');
- Créer une nouvelle entrée et rediriger vers la page du formulaire de demande de devis
return $this->_redirect('*/*/quote');
- Afficher un message de confirmation en utilisant avant la redirection
Mage::getSingleton('core/session')->addSuccess(Mage::helper('formation_test')->__('Message'));
TP - Afficher la liste des demandes de devis
Sur la page maroute/request/list, afficher l'ensemble des demandes de devis en utilisant la collection. Le fonctionnement est similaire à la collection de produits que nous avions utilisée.
Formation Magento Developpeur
Magento 1.X