Question

Je suis tombé sur ce bloc de code dans une extension qui parcourt les produits enfants et tente de renvoyer leur quantité de stock actuelle et le nom des produits enfants :

<?php foreach ($this->getChildProducts() as $childProduct) : ?>
        <?php $childProductStockQty = $this-> getProductStockQty($childProduct);?>
        <?php if ($childProductStockQty > 0) : ?>
            <tr>
                <td><?php echo $childProduct->getName() ?></td>
                <td class="a-center"><?php echo $childProductStockQty ?></td>
            </tr>
        <?php endif ?>
    <?php endforeach ?>

Dans CE 1.9.0.1 cela a parfaitement fonctionné, renvoyant à la fois les noms de produits et les quantités en stock comme prévu.Dans CE 1.9.1, il renverra les quantités de stock correctes, mais le nom renvoie null.

Ma question n'est pas tant « qu'est-ce qui ne va pas avec cette extension ? », j'ai également envoyé une question au développeur.Je me demande si l'un d'entre vous sait s'il y a des changements dans CE 1.9.1 dans comment récupérer un nom de produit enfant.

En lisant le code dans le Mage/CatalogInventory/Block/Stockqty Le terrier du lapin n'a apporté aucune lumière que je puisse détecter.

Tous les conseils sont appréciés.

Était-ce utile?

La solution

C'est intéressant que le nom renvoie null.À la recherche du code dans lequel il aboutit getUsedProducts cela devrait Retrieve array of "subproducts" et renvoie une collection de produits.

Il n'y a aucun changement que je peux voir en comparant un dépôt local de 1.9.0.1 à 1.9.1, c'est donc un léger mystère.Encore plus étrange que le stock vous soit retourné mais que le nom soit nul.Les deux doivent être présents dans le modèle car ce sont des champs obligatoires.Peut-être que le module apporte des modifications supplémentaires à la collection qui affectent le comportement de base.

Mais pour répondre à la question.Je ne vois rien qui ait changé entre ces deux versions.

Autres conseils

Je résous ça avec cette ligne

<?php $childProduct = Mage::getModel('catalog/product')->load($childProduct->getId()); ?>

Je reçois donc toutes les informations sur childProduct, et maintenant getName obtient ce que nous attendons.

J'espère que ça aide!ce n'est pas la meilleure façon, mais ça marche.

Premièrement, avez-vous au moins des objets produit valides dans la boucle ?c'est à dire.Est $childProduct->getId() rétablir une pièce d'identité ou null?Si c'est le cas, quelque chose s'est cassé lors de la mise à niveau.Veuillez noter que $this->getProductStockQty() et $childProduct->getName() sont pas la même méthode.Ainsi, ils ne doivent pas nécessairement travailler ensemble ou échouer ensemble.

Deuxièmement, vous devrez examiner les blocs respectifs getChildProducts() méthode.À partir de là, vous pouvez retracer la manière dont la collection est constituée.Cela peut être dû au fait que la collection (pour une raison quelconque après la mise à niveau) n'inclut pas le name domaine dans son addAttributeToFilter() filtre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top