Pergunta

Me deparei com esse bloco de código em uma extensão que percorre os produtos filhos e tenta retornar a quantidade de estoque atual e o nome dos produtos filhos:

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

Em CE 1.9.0.1 isso funcionou perfeitamente, retornando os nomes dos produtos e as quantidades em estoque conforme o esperado.Em CE 1.9.1, ele retornará as quantidades corretas de estoque, mas o nome retornará nulo.

Minha pergunta não é tanto 'o que há de errado com esta extensão?', também enviei uma pergunta ao desenvolvedor.Gostaria de saber se algum de vocês está ciente se há mudanças no CE 1.9.1 em como recuperar o nome de um produto filho.

Lendo o código abaixo Mage/CatalogInventory/Block/Stockqty a toca do coelho não lançou nenhuma luz que eu possa detectar.

Todo e qualquer conselho é bem-vindo.

Foi útil?

Solução

É interessante que o nome esteja retornando nulo.Caçando através do código em que acaba getUsedProducts Isso deveria Retrieve array of "subproducts" e retorna uma coleção de produtos.

Não há mudanças que eu possa ver ao comparar um repositório local de 1.9.0.1 a 1.9.1, então é um pequeno mistério.Ainda mais estranho que você esteja recebendo ações devolvidas, mas o nome é nulo.Ambos devem estar presentes no modelo, pois são campos obrigatórios.Talvez o módulo faça algumas modificações adicionais na coleção que estão afetando o comportamento principal.

Mas para responder à pergunta.Não consigo ver nada que tenha mudado entre essas duas versões.

Outras dicas

Eu resolvo isso com esta linha

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

Então, recebo todas as informações do childProduct e agora getName obtém o que esperamos.

Eu espero que isso ajude!não é a melhor maneira, mas funciona.

Primeiro, você tem objetos de produto válidos no loop?ou sejaÉ $childProduct->getId() retornando um ID ou null?Se sim, algo quebrou quando você atualizou.Por favor, note que $this->getProductStockQty() e $childProduct->getName() são não o mesmo método.Portanto, eles não precisam necessariamente trabalhar juntos ou falhar juntos.

Em segundo lugar, você precisaria examinar o respectivo bloco getChildProducts() método.A partir daí, você pode acompanhar como a coleção é montada.Pode ser porque a coleção (por qualquer motivo após a atualização) não inclui o name campo em seu addAttributeToFilter() filtro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top