Scripts d'installation

Déclarer notre script d'installation

<global>
    <resources>
        <formation_test_setup> <!-- Détermine le nom du dossier dans sql -->
            <setup>
                <module>Formation_Test</module>
                <class>Formation_Test_Model_Resource_Setup</class>
            </setup>
        </formation_test_setup>
    </resources>
</global>

Pour que notre classe Formation_Test_Model_Resource_Setup fonctionne, nous devons au préalable déclarer les models et les resources dans le noeud global de notre config.xml :

<models>
    <formation_test>
        <class>Formation_Test_Model</class>
        <resourceModel>formation_test_resource</resourceModel>
    </formation_test>
    <formation_test_resource>
        <class>Formation_Test_Model_Resource</class>
        <entities> <!-- Déclaration des tables, accessible en indiquant formation_test/quoterequest -->
            <quoterequest>
                <table>formation_test_quote_request</table>
            </quoterequest>
        </entities>
    </formation_test_resource>
</models>

Le contenu de la classe est très simple :

<?php class Formation_Test_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup {}

Nos scripts d'installation seront situés dans le dossier sql/formation_test_setup et seront appelés install-1.0.0.php pour une première installation puis upgrade-<ancienne_version>-<nouvelle_version>.php, par exemple upgrade-1.0.0-1.0.1.php.

Lorsque Magento charge une page, il va vérifier la version de l'ensemble des modules dans les fichiers config.xml et va les comparer avec ce qu'il a dans la table core_resource. S'il voit une montée de version, il va appliquer l'ensemble des scripts jusqu'à arriver à la dernière version.

TP - Création de la table formation_test_quote_request

  1. Déclarer notre script d'installation
  2. Créer le fichier install-1.0.0.php et faire en sorte qu'il crée la table formation_test_quote_request. Pour cela, voir comment Magento fait dans le fichier d'installation du module Catalog. La table doit contenir les champs id (int, auto-increment), name, email et message
  3. Rafraichir une page de Magento, et vérifier que la table est bien créée

Si l'installation d'un script ne fonctionne pas, vous devez supprimer la ligne de votre module dans la table core_resource pour relancer l'installation, ou redescendre la version dans le cas d'une mise à jour.

TP - Ajout de la colonne telephone

  1. Créer un script de mise à jour upgrade-1.0.0-1.0.1.php et modifier la version du module dans le config.xml en 1.0.1
  2. Faire en sorte qu'il ajoute la colonne telephone dans la table formation_test_quote_request. Pour cela, vous pouvez vous inspirer de ce que fait Magento dans le script upgrade-1.6.0.0.6-1.6.0.0.7.php du module Catalog.

Il est aussi possible de mettre à jour une valeur en configuration, de créer des attributs etc. Aucune action ne devrait être faite dans le back-office pendant le développement. En effet, si vous créez un attribut produit depuis le back-office par exemple, il n'existera pas lorque vous déploirez en préproduction, en production, ou lorsqu'un autre développeur travaillant sur le projet récupèrera votre code. Il faut donc à chaque fois utiliser un setup