Pregunta

Encontré este bloque de código en una extensión que recorre los productos secundarios e intenta devolver la cantidad de existencias actual y el nombre de los productos secundarios:

<?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 ?>

En CE 1.9.0.1 Esto funcionó perfectamente y devolvió tanto los nombres de los productos como las cantidades de existencias como se esperaba.En CE 1.9.1, devolverá las cantidades de existencias correctas, pero el nombre devuelve nulo.

Mi pregunta no es tanto "¿qué problema tiene esta extensión?", también le envié una pregunta al desarrollador.Me pregunto si alguno de ustedes sabe si hay cambios en CE 1.9.1 sobre cómo recuperar el nombre de un producto secundario.

Leyendo el código en el Mage/CatalogInventory/Block/Stockqty La madriguera del conejo no ha arrojado ninguna luz que pueda detectar.

Cualquiera y todos los consejos son apreciados.

¿Fue útil?

Solución

Es interesante que el nombre está regresando nulo.Cazando el código que termina en getUsedProducts que debe generaracodicetAcode y devuelve una colección de productos.

No hay cambios que pueda ver al comparar un repo local de 1.9.0.1 a 1.9.1, por lo que es un ligero misterio.Incluso extraño que está siendo devuelto las acciones, pero el nombre es NULL .. Ambos deben estar presentes en el modelo, ya que son campos obligatorios.Quizás el módulo haga algunas modificaciones adicionales a la recolección que está afectando el comportamiento del núcleo.

pero para responder a la pregunta.No puedo ver nada que haya cambiado entre estas dos versiones.

Otros consejos

Yo soluciono esto con esta línea

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

Así que obtengo toda la información de productos infantiles, y ahora el GETNAME obtiene lo que esperamos.

¡Espero que esto ayude!No es la mejor manera, pero funciona.

En primer lugar, ¿tiene siquiera objetos de producto válidos en el bucle?es decir.Es $childProduct->getId() devolver una identificación o null?Si es así, algo se rompió cuando actualizaste.Tenga en cuenta que $this->getProductStockQty() y $childProduct->getName() son no el mismo método.Por lo tanto, no necesariamente tienen que trabajar juntos o fracasar juntos.

En segundo lugar, necesitaría examinar el bloque respectivo. getChildProducts() método.A partir de ahí, podrás seguir cómo se ha formado la colección.Puede deberse a que la colección (por cualquier motivo después de la actualización) no incluye el name campo en su addAttributeToFilter() filtrar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top