11
votes

Obtenir des produits d'une commande à Magento

Dans mon projet Magento, sous mon compte> Mes commandes (enregistrées sur le client), je suis capable de voir les détails de la commande avec les produits que j'ai commandés. Maintenant, pour chacun des produits commandés, j'aimerais récupérer un attribut spécifique, de ma compréhension, l'extrait de code au début de Sales / Commande / Éléments / Renderer / Default.phtml Lequel est _ article = ceci-> getItem (); est la commande elle-même donc si j'utilise quelque chose comme $ _ item-> getid () , je reçois la commande ID et non le produit.

J'ai essayé de rechercher et avons fini avec ce code: xxx

espérant pouvoir utiliser l'ID de produit pour obtenir les autres attributs dudit produit Cependant, je reçois une erreur avec ce code sans aucun moyen de dire quelle est l'erreur. J'ai aussi essayé quelque chose comme ceci: xxx

mais je continue à obtenir 0 lorsque j'essaie de vérifier le nombre d'éléments de la collection de produits. Comment puis-je récupérer un attribut personnalisé pour le produit dans cette page?


6 commentaires

Vous pouvez voir ma réponse de cette question à partir de cette question Stackoverflow.com/ Questions / 18307847 / Détails du produit-In-Mage NTO / ...


Merci mais je n'ai pas l'identifiant des produits, donc je ne peux donc pas l'utiliser pour charger les détails du produit.


Si vous êtes dans Ventes / Commandes / Éléments / Renderer / Default.phtml La variable $ _Item est un article de commande, pas une commande afin que vous ayez $ item-> getproductid ();


Merci beaucoup. J'ai eu l'ID de produit maintenant, mais je ne suis toujours pas en mesure d'obtenir un attribut personnalisé que je voudrais afficher là-bas.


Comme je l'ai dit dans mon premier commentaire si vous regardez ma réponse, vous verrez que (après avoir obtenu le produit produit), vous avez 2 méthodes pour obtenir un attribut du produit. Premier est de faire un produit = mage :: getmodel ('Catalogue / produit') -> Charger ($ productible); secondaire est d'ajouter cet attribut au système XML du module de vente de Magento de sorte que lorsque l'élément de commande est créé, il aura cet attribut copié à celui du produit


Je dois afficher l'attribut spécifié en fonction de la localisation du site Web (j'utilise Multilingue Store). J'ai utilisé votre première suggestion et cela n'a travaillé que sur le dernier article de ma commande. Pour les premiers éléments, l'attribut n'a pas apparu.


3 Réponses :


23
votes

Cela devrait fonctionner mieux: XXX

Jetez un coup d'œil ici pour plus d'informations: http://www.magentocommerce.com/boards/viewththread/18629/


0 commentaires

19
votes

tandis que la réponse donnée par Jésus électrique fonctionnera qu'il contient une question de performance potentielle de chargement de produits dans la boucle .

La bonne implémentation serait la première pour obtenir des identifiants de produits commandés, puis les charger tous à la fois. En supposant que vous ayez déjà votre commande chargée: xxx


5 commentaires

Magento a une collection pour une raison!


N'avons-nous pas besoin d'appeler $ productCollection-> charger (); à la fin de cette


Cela dépend de ce que vous allez avec la collection ensuite.


Charger () est généralement appelé implicitement sur une collection dès que vous essayez de faire quoi que ce soit avec elle (par exemple la boucle à travers elle). C'est rare que vous ayez jamais besoin de l'appeler vous-même.


Ineed une meilleure solution.



1
votes
$_orders = $this->getOrders();
$orderitems = $_order->getAllVisibleItems();
foreach ($_orders as $_order): 
  $orderitems = $_order->getAllVisibleItems();
  foreach ($orderitems as $orderitem): 
    $product = $orderitem->getProduct(); 
    echo $product->getId();
  endforeach; 
endforeach;
I have the same problem and this is my solution

1 commentaires

CETTE! est une approche correcte pour charger les données de produits du catalogue.