Guide Magento Developpeur (Leçon 9) – Réécrire un Model dans Magento
9 septembre 2010Ce 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 ![]()
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.
++
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]
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 ?
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 !
Merci