Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

Surcharge - Overload
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

Surcharge - Overload

#14915
ykaribou
Expert Boarder
Messages: 99
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Surcharge - Overload

Il y a 9 Années, 4 Mois
Karma: 1  
Beaucoup de personne ont des questions concernant la surcharge sous Magento, je me permets de créer ce topic.

Surcharge d'un Controler :

Pour l'instant référez vous au lien suivant.
lien

Surcharge d'un Model :

Un Model correspond est une classe en lien avec un Objet PHP (Comme par exemple un customer).
Dans un Model, vous trouvez les méthodes permettant de récupérer les informations sur l'objet PHP (Pour le customer, récupérer son nom ...) et des méthodes permettant d'effectuer des actions sur l'objet PHP(Pour le customer, méthode de connexion à son compte ...).

Exemple pris par rapport au module Core/Mage/Customer.

Pour pouvoir surcharger un Model, il faut :

  1. Créer l'arborescence des fichiers correspondant à l'arborescence du module Core/Mage/Customer:


  2. Arborescence du fichier Core/Mage/Customer :

    app/core/Mage/Customer/Model/Customer.php
    app/core/Mage/Customer/etc/config.xml

    Arborescence à créer pour la surcharge :

    app/code/local/MyCompagny/Customer/Model/Customer.php
    app/code/local/MyCompagny/Customer/etc/config.xml

    Si vous n'avez pas déjà surchargé le module Core/Mage/Customer, il faut créer un fichier qui permet d'activer/désactiver la surcharge.
    app/etc/modules/MyCompagny_Customer.xml

  3. Fichier app/code/local/MyCompagny/Customer/Model/Customer.php :

  4. Tout d'abord, il faut renommer la classe du module et la faire hériter de la classe surchargée.
    Pour le customer ca donne:

    Code :

    class MyCompagny_Customer_Model_Customer extends Mage_Customer_Model_Customer
    {
    .... Méthodes de la classe surchargé ....
    }



  5. Fichier app/code/local/MyCompagny/Customer/etc/config.xml :

  6. Ce fichier permet de définir quel fichier Magento doit utiliser pour son exécution.
    Ici on lui dit d'utiliser notre fichier que l'on a définit ci-dessus .

    Code :

    <config>

        <modules>
            <MyCompagny_Customer>
                <version>1.0.0</version>
            </MyCompagny_Customer>
        </modules>

       
        <global>
            <models>
                <customer> <!--cette balise correspond au nom du module surchargé--!>
                    <rewrite>
    <!--cette balise correspond au nom du fichier surchargé contenu dans le module, ici Customer.php. Entre les balises, nous avons le nom de la classe qui surcharge--!>
    <customer>MyCompagny_Customer_Model_Customer</customer> 
    </rewrite>
                </customer>
            </models>
        </global>
    </config>



  7. Fichier app/etc/modules/MyCompagny_Customer.xml

  8. Voici le type de code permettant d'activer/désactiver le module.

    Code :

    <?xml version="1.0"?>
    <config>
        <modules>
            <MyCompagny_Customer>
                <active>true</active>
                <codePool>local</codePool>
            </MyCompagny_Customer>
        </modules>
    </config>



Le principe de cette surcharge est applicable a tout les dossiers du Core/Mage/.
Pensez a vider votre cache avant de tester si la surcharge fonctionne.

Surcharge d'un Helper:

Un helper correspond a une extension de model possédant des méthodes faisant le lien entre différents objets PHP.

Exemple pris par rapport au module Core/Mage/Customer.

Pour pouvoir surcharger un Helper, il faut :

  1. Créer l'arborescence des fichiers correspondant à l'arborescence du fichier Core/Mage/Customer:


  2. Arborescence du fichier Core/Mage/Customer :

    app/core/Mage/Customer/Helper/Address.php
    app/core/Mage/Customer/etc/config.xml

    Arborescence à créer pour la surcharge :

    app/code/local/MyCompagny/Customer/Helper/Address.php
    app/code/local/MyCompagny/Customer/etc/config.xml

    Si vous n'avez pas déjà surchargé le module Core/Mage/Customer, il faut créer un fichier qui permet d'activer/désactiver la surcharge.
    app/etc/modules/MyCompagny_Customer.xml

  3. Fichier app/code/local/MyCompagny/Customer/Helper/Address.php :

  4. Tout d'abord, il faut renommer la classe du module et la faire hériter de la classe surchargée.
    Pour le customer ca donne:

    Code :

    class MyCompagny_Customer_Helper_Address extends Mage_Customer_Helper_Address
    {
    .... Méthodes de la classe surchargé ....
    }



  5. Fichier app/code/local/MyCompagny/Customer/etc/config.xml :

  6. Ce fichier permet de définir quel fichier Magento doit utiliser pour son exécution.
    Ici on lui dit d'utiliser notre fichier que l'on a définit ci-dessus .

    Code :

    <config>

        <modules>
            <MyCompagny_Customer>
                <version>1.0.0</version>
            </MyCompagny_Customer>
        </modules>
    <global>
        <helpers>
            <customer><!--cette balise correspond au nom du module surchargé--!>
                 <rewrite>
       <!--cette balise correspond au nom du fichier surchargé contenu dans le module, ici Address.php. Entre les balises, nous avons le nom de la classe qui surcharge--!>
                       <address>MyCompagny_Customer_Helper_Address</address>
                </rewrite>
            </customer>
         </helpers>
    </global>
    </config>




  7. Fichier app/etc/modules/MyCompagny_Customer.xml

  8. Voici le type de code permettant d'activer/désactiver le module.

    Code :

    <?xml version="1.0"?>
    <config>
        <modules>
            <MyCompagny_Customer>
                <active>true</active>
                <codePool>local</codePool>
            </MyCompagny_Customer>
        </modules>
    </config>



Le principe de cette surcharge est applicable a tout les dossiers du Core/Mage/.
Pensez a vider votre cache avant de tester si la surcharge fonctionne.
 
Dernière édition: 11/06/09 à  08:46 Par ykaribou.
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: Gabriiiel, ILOA, zuiko