Freelance Expert Technique Magento - Magento : Surcharger un Controller

CONTACT
RSS

Magento : Surcharger un Controller

La surcharge d’un controller sous Magento n’est pas très compliquĂ©e, mais nĂ©cessite tout de mĂŞme de suivre une dĂ©marche prĂ©cise. Dans cet exemple, nous allons surcharger un  controller Ă©tendant la gestion du compte client.

Bien, cet exemple part du principe que vous ayez dĂ©jĂ  mis en place votre module qui aura pour vocation d’Ă©tendre ce controller. J’appellerai ici ce module ‘Etendu’, qui serait placĂ© dans app/code/local/Charlous/Etendu (Charlous, c’est moi :p).

Nous créons donc notre AccountController.php qui se trouve dans app/code/local/Charlous/Etendu/controllers/Customer/ et qui contient le code suivant :

<?php
require_once 'app/code/community/Auguria/Sponsorship/controllers/Customer/AccountController.php';
class Charlous_Etendu_Customer_AccountController extends Auguria_Sponsorship_Customer_AccountController
{
   public function indexAction(){
        die('ça marche');
   }
}

Vous constaterez que je force l’include du controller source, ceci pour que toutes les fonctions non Ă©tendues aient tout de mĂŞme leur petit effet.
Ensuite, je crĂ©e au sein de mon controller toutes les fonctions que je souhaite Ă©tendre et qui remplaceront donc celles initialement prĂ©vues. Pour l’exemple, je claque juste un die() sur l’action d’index. Donc si ça plante quand vous accĂ©dez Ă  l’url votre_site.com/customer/account, vous devez avoir une jolie page blanche, tĂ©moignant de la rĂ©ussite de votre surcharge.

Pour l’instant bien sur, rien ne se produit, il vous auparavant correctement renseigner votre config.xml – celui de votre module perso et donc sitĂ© dans app/code/local/Charlous/Etendu/etc/- de la manière suivante :

<!-- ... -->
<global>
   <rewrite>
    	<Charlous_Etendu_customer_account>
          <from><![CDATA[#^/customer/account/#]]></from>
          <to>/Charlous_Etendu/customer_account/</to>
        </Charlous_Etendu_customer_account>
   </rewrite>
   <!-- ... -->
</global>
<!-- ... -->

Dans vous insĂ©rez ces quelques lignes qui spĂ©cifient dont que dĂ©sormais, tout pointage effectuĂ© vers le controller d’account sera redirigĂ© vers votre AccountController perso.
Et voilà pour le controller, rien de très compliqué.

Étendre un Model

CATÉGORIES :

Magento

, Php

, Tutoriels

  1. Une bonne pratique Ă  ne pas oublier :

    require_once Mage::getModuleDir(‘controllers’, ‘Mage_Cusomer’) . DS . ‘AccountController.php’;

    De cette manière le Compiler de Magento sera encore fonctionnel ! :-)

  1. No trackbacks yet.