Guide Magento Developpeur (Leçon 9) – Réécrire un Model dans Magento

9 septembre 2010

Ce tutoriel est le 9eme d’une longue série, si vous ne l’avez pas déjà fait je vous conseille de lire les tutoriels en commençant par le sommaire de cette série.

Voici un petite article en attendant le prochain qui est un peu plus long a rédiger sur les Events et les Observers sous Magento.

Si vous voulez m’aider, vous pouvez faire un petit article au sujet cette suite de tutoriels sur votre blog, vous pouvez tweeter sur ces articles, etc…n’hésitez pas. Par contre pas de copier/coller svp, Google n’aime pas !! Merci ;)

Modifier un model existant, ca sert a quoi ?

Aujourd’hui on va étendre un Model, ca peu être utile de temps en temps donc vous devez savoir le faire. Cela peu servir si vous voulez par exemple modifier la méthode getName()

Alors comment faire pour réécrire un model ?

Reprenons le module MonProduit du tutoriel précédent et étendons un model.

class Pfay_MonProduit_Model_Customer  extends Mage_Customer_Model_Customer
{
  public function getName()
  {
     $name = '';
        if ($this->getPrefix()) {
            $name .= $this->getPrefix() . ' ';
        }
        $name .= $this->getFirstname();
        if ($this->getMiddlename()) {
            $name .= ' ' . $this->getMiddlename();
        }
        $name .=  ' ' . $this->getLastname();
        if ($this->getSuffix()) {
            $name .= ' ' . $this->getSuffix();
        }
        return $name.'22222222';
  }
}

Ensuite même principe, éditez le config.xml dans :

  <models>
    <customer>
      <rewrite>
        <product> Pfay_MonProduit_Model_Customer</product>
      </rewrite>
    </customer>
  </models>
 

maintenant, si vous utilisez votre method getName() sur un objet de type Customer, vous allez avoir la chaine « 22222222 » après le nom.

Ceci est un exemple pour vous montrer qu’on peu faire une modification d’un Model facilement, cet exemple ne sert a rien mais il est facile a comprendre ;)

Conclusion:

Et voila ! Vous savez maintenant réécrire un block ;)

Comme d’habitude, N’hésitez pas à laisser vos messages en commentaire et mettre un liens vers ces tutoriaux sur vos sites internet. Ça fait toujours plaisir :)


Retrouvez le sommaire de ce tutoriel

Cédric # 4 octobre, 2010

Bonjour,

Si j’ai bien compris, je pense qu’il s’agit plutôt d’écrire :

Pfay_MonProduit_Model_Customer

Certainement un copier/coller malencontreux du précédent article ;)

Merci pour tous ces articles qui m’ont bien aidés à comprendre la mécanique Magento.

++

# 4 octobre, 2010 Cédric

Désolé pour mon commentaire ci-dessus, les balises xml ne sont pas passées…
Je voulais juste mettre en lumière une coquille sur la ligne [customer]Pfay_MonProduit_Model_Customer[/customer]

Samuel # 25 mars, 2011

Hello,

J’ai découvert un cas ou les models ne peuvent pas être surchargé. Ce sont ceux de type “abstract” qu’on retrouve un peu partout par exemple dans sales/quotes/item

J’ai lu qu’il était préférable de surcharger les blocks à ce niveau mais ça pose un problème justement dans mon exemple parce que je travail sur les totaux des prix.

Seul moyen trouvé que j’ai trouvé pour pallier ce problème c’est de créer un dossier Mage dans les codes du dossier local et qui se charge avant le core.

Est-ce que tu connaîtrais quelque chose de plus élégant ?

# 18 janvier, 2012 eddz

Après avoir mis en pratique ce tutoriel, j’ai eu l’occasion de remarquer des erreurs sur config.xml.
En Effet, en plus des tags config, modules global etc manquant le tag doit être remplacé par .

Enjoy !

Olivier.D # 26 janvier, 2012

Merci :)

# 14 juin, 2013 Mcodi

pour la partie config.xml, il y a une erreur :
on doit remplacer [product][ Pfay_MonProduit_Model_Customer][/product]
par :
[costumer][ Pfay_MonProduit_Model_Customer][/costumer]
car on veut surcharger un model customer et pas product

skyboard # 23 janvier, 2014

voici le fichier config.xml :

Pfay_MonProduit_Model_Customer

# 23 janvier, 2014 skyboard

1.0.0

Pfay_MonProduit_Block_Catalog_Product_View

Pfay_MonProduit_Model_Customer

Vous aussi donnez votre avis
(requis)



Expert magento sur Lille - Pierre FAY
Rechercher dans le site :