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 _init de 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 map et remplacer page_id par 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.