getData() magento

octobre 30, 2009 4 Commentaires

getData une autre méthode importante de magento qui permet de récupérer les éléments de notre objet. Suite au précédent tutoriel sur getmodel() , en voici un sur getData(). Nous allons voir dans ce tutoriel comment récupérer les éléments d’un produit et les afficher grâce a ce code.

getModel et getdata()

Nous avons vu dans le précédent tutoriel comment getModel permettait d’instancier la classe product et récupérer cette instance dans une variable. Voici comment récupérer l’instance de classe dans la variable $product

$Product = Mage::getModel(‘catalog/product’);
Nous avons vu que cet objet avait accès à des méthodes pratiques pour récupérer par exemple le nom du produit getName()

 echo "nom du produit =". $Product->getName();

Cette méthode se trouve dans \code\core\Mage\Catalog\Model\Product.php

public function getName()
{
return $this->_getData('name');
}

Vous avez la possibilité de récupérer le nom du produit et bien d’autres paramètres via la méthode getData().

Utiliser getData() avec un paramètre pour récupérer un élément de l’objet

Au lieu d’utiliser getName() vous avez la possibilité d’utiliser la méthode getData() avec comme paramètre l’élément que vous souhaitez récupérer.

echo $Product->getData(‘sku’);
echo $Product->getData(‘price’);
echo $Product->getData(‘url_key’);
echo $Product->getData(‘url_path’);
echo $Product->getData(‘short_description’); etc…
Pour connaître tous les éléments que vous pouvez passer comme paramètre à la fonction getData() , utilisez la méthode sans paramètre.

Utiliser getData() sans paramètre liste tous les éléments

Pour tout afficher :

print_r ($Product-> getData ());

Ce résultat correspond à la partie « _data:protected] => Array » lorsque vous faîte un « print_r » de $product => print_r($Product);
voici un extrait :

[price_qty] => 3.0000 [price] => 900.0000 [website_price] => 900 ) ) [media_gallery] => Array ( [images] => Array ( [0] => Array ( [value_id] => 375 [file] => /r/o/robots.jpg [label] => [position] => 2 [disabled] => 0 [label_default] => [position_default] => 2 [disabled_default] => 0 ) [1] => Array ( [value_id] => 376 [file] => /r/o/robots1.jpg [label] => [position] => 3 [disabled] => 0 [label_default] => [position_default] => 3 [disabled_default] => 0 ) [2] => Array ( [value_id] => 377 [file] => /S/a/Sans-titre-7.jpg [label] => [position] => 4 [disabled] => 0 [label_default] => [position_default] => 4 [disabled_default] => 0 ) ) [values] => Array ( )
Code
4 commentaires : “getData() magento”
  1. vrnet dit :

    Merci cedddd pour ce billet.

    Peut-être serait-ce le bon endroit pour parler de getAttributeText() car getName() va renvoyer ce que développeur cherche à afficher (le nom du produit) mais si celui-ci crée un attribut à choix multiple, le rendu sera… inattendu :)

    Peut-être est-ce le sujet d’un autre billet et l’exemple serait très parlant sur l’attribut manufacturer/fabricant me semble-t-il.

    Enfin, une suggestion de billet futur basé sur une expérience personnelle et que d’autres lecteurs auront peut-être aussi :
    je cherchais à afficher un résumé de la commande plus complet dans la zone « review » (dernière étape) du onepage checkout. L’idée était de supprimer la colonne de droite (checkout progress) et d’afficher le récap’ des adresses de facturation, livraison, expédition et mode de paiement. Tout allait bien pour les 3 premiers grâce à getBillingAddress(), getShippingAddress() et je ne sais plus quelque classe pour le shipment mais, arrivé au bloc de paiement… impossible. J’avais bien réussi à récupérer les infos de paiement avec getQuote()->getPayment()->getMethodInstance() et ceci renvoie bien les infos du payment dont la page phtml de la méthode choisie mais… je me suis cogné la tête à transformer ces infos en bloc html. Les getHtml() et getLayout() placés par-ci par-là n’ont rien donné. Je précise que j’ai aussi tenté en passant par le XML mais sans succès.

    D’ou cette idée de billet : comment traiter et renvoyer le contenu HTML d’un bloc ? En plus, l’exemple du bloc de paiement est pas mal non ? :)

    En espérant que ceci n’intéressera pas que moi :)

    Bonne journée.

  2. admin dit :

    Salut
    En effet oui il vaux mieux utiliser getAttributText() pour un attribut a choix multiple. je ferais un tuto sur cette méthode.

    Pour ton problème je n’ai jamais essayé. je regarderai et ferai un tutoriel car c’est vrai que magento est un peut pauvre niveaux informations sur le récapitulatif de commande. :)

  3. Sylvain dit :

    Trés bon article :)

  4. marvin dit :

    Salut ceddd,

    Je suisun petit bloqué. Je suis dans une catégorie et j’applique un filtre sur l’attribut « manufacturer ». Mon problème c’est que ça filtre rien. J’ai juste rajouter addAttributeToSelect() et addAttributeToFilter à la ligne qui récupère la collection de la catégorie.

    $_productCollection=$this->_getProductCollection()->addAttributeToSelect(‘*’)->addAttributeToFilter(‘manufacturer’, ’25′);

    J’ai fait un getData sur chaque produits affiché et il y a bien les manufacturer dedans. Une petite idée ?

Poster un commentaire

(obligatoire)

(obligatoire)