getModel() une méthode importante de magento

octobre 27, 2009 3 Commentaires

Certaines méthodes de magento sont importantes comme getModel(), getSingleton(), getData(). Nous allons voir dans ce tutoriel la méthode getModel () avec comme paramètre catalog/product qui permet d’instancier la classe product.php. getModel() peut être instancier avec d’autres paramètres.

getModel() pour instancier une classe Model, Mage::getModel(‘catalog/product’);

Pour instancier la classe vous pouvez créer une variable qui stockera l’instance comme ceci :

$produit= Mage::getModel(’catalog/product’);

Ce code instancie la classe product qui se trouve dans

 => app\code\core\Mage\Catalog\Model\Product.php

Vous avez accès à toutes les méthodes et variables de la classe Product.php ainsi que toutes les méthodes et variables étendues par la classe product, comme abstract.php.

Avec netbeans vous pouvez lister les méthodes d’une classe et ouvrir rapidement une classe étendue.

Vous pouvez également lister toutes les méthodes pour les afficher dans la page html avec des fonctions php comme ceci :

foreach (get_class_methods(get_class($this)) as $touteMethod) {
echo $touteMethod ."<br>";
}
Une partie des méthodes générée par le code

Une partie des méthodes générée par le code

Pour utiliser ces méthodes il faut renseigner le produit sur lequel vous travaillez et récupérer l’id du produit.

$Product->load (12); //charge le produit avec id 12

Utiliser les méthodes de la classe product.php

Vous pouvez maintenant utiliser les méthodes présentes dans la classe product.php comme getName(), getPrice() ou d’autres :

$Product= Mage::getModel('catalog/product');
$Product->load (180); //charge le produit avec une id de 180
 
echo "nom =". $Product->getName() ."<br>";
 
echo  "prix =".  $Product->getPrice() ."<br>";
 
echo "ID de la categorie=". $Product->getCategoryId() ."<br>";
 
echo "statut=".  $Product->getStatus() ."<br>"

Utiliser les méthodes de la classe abstract.php

Vous pouvez également utiliser les méthodes de la classe Abstract

app\code\core\Mage\Catalog\Model\Abstract.php
echo "store=".  $Product->getStore();

affichera les informations sur le store

=> statut=3,default,1,1,French,0,1,EUR,fr_FR,http://localhost/magento/?___store=default

Utiliser getModel avec d’autres paramètres

echo $_product->getShortDescription(); 
echo $_product->getDescription();
echo $_product->getName(); 
echo $_product->getUrlPath(); 
echo $_product->getPrice(); 
echo $_product->getSpecialPrice(); 
echo $_product->getProductUrl();  // url du produit
echo $_product->getImageUrl(); 
echo $_product->getSmallImageUrl(); 
echo $_product->getThumbnailUrl();

Afficher le contenu de getModel()

Vous pouvez afficher les données :
dans le fichier view.phtml entrez ce code :
$Product = Mage::getModel(‘catalog/product’);
$Product->load (174); // 174 ou id d’un de vos produits
print_r($Product);
Affiche les éléments de votre produit. Un des plus important et le tableau => [_data:protected] => Array
Corresponds à la méthode getData() importante pour récupérer des éléments de votre objet. Nous verrons dans un prochain tutoriel comment utiliser getData().

Vous pouvez également utiliser getModel() avec d’autres paramètres comme :
Mage::getSingleton(‘checkout/type_onepage’)
$categories = Mage::getModel( ‘catalog/category’ )
$categories = Mage::getModel( ‘catalog/layer’ ) …

Code
3 commentaires : “getModel() une méthode importante de magento”
  1. damien dit :

    Bonjour,
    je recherche un $Product->getStatus() qui renvoie autre chose que 1, donc qui fonctionne.
    Merci

  2. cédric rousset dit :

    Bonjour,
    Status 1 = actif il me semble. Que cherche tu as afficher ?

  3. Adrien dit :

    Hello,

    J’aimerai récupérer les attributs d’un produit configurable.

    J’ai procédé de la même manière que toi pour chargé le bon produit.

    Puis j’ai voulu faire appel à la fonction:
    $Product->getAttributeText(‘attribut_couleur’)

    Mais ça ne fonctionne pas comme je le voudrai!

    J’aimerai afficher toutes les valeurs d’attribut possible pour « couleur ».

    Comment dois-je faire?

    Je code dans un block perso car je suis en train de créer un module.

    Merci

Poster un commentaire

(obligatoire)

(obligatoire)