Domanda

Mi sono imbattuto in questo blocco di codice in un'estensione che scorre tra i prodotti secondari e tenta di restituire la quantità di stock corrente e il nome dei prodotti secondari:

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

In CE 1.9.0.1 ha funzionato perfettamente, restituendo sia i nomi dei prodotti che le quantità di stock come previsto.In CE 1.9.1, restituirà le quantità di stock corrette, ma il nome restituirà null.

La mia domanda non è tanto "cosa c'è che non va in questa estensione?", ho inviato una domanda anche allo sviluppatore.Mi chiedo se qualcuno di voi è a conoscenza di eventuali cambiamenti CE 1.9.1 su come recuperare il nome di un prodotto figlio.

Leggendo il codice lungo il Mage/CatalogInventory/Block/Stockqty La tana del coniglio non ha emesso alcuna luce che io possa rilevare.

Qualsiasi consiglio è apprezzato.

È stato utile?

Soluzione

È interessante che il nome restituisca null.Cercando il codice in cui finisce getUsedProducts che dovrebbe Retrieve array of "subproducts" e restituisce una raccolta di prodotti.

Non ci sono cambiamenti che posso vedere confrontando un repository locale da 1.9.0.1 a 1.9.1, quindi è un piccolo mistero.Ancora più strano che ti venga restituito lo stock ma il nome è nullo..Entrambi dovrebbero essere presenti nel modello in quanto sono campi obbligatori.Forse il modulo apporta alcune modifiche aggiuntive alla raccolta che influiscono sul comportamento principale.

Ma per rispondere alla domanda.Non riesco a vedere nulla che sia cambiato tra queste due versioni.

Altri suggerimenti

Io risolto questo con questa riga

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

Quindi ottengo tutte le informazioni sui minori del prodotto, e ora il getname ottiene ciò che ci aspettiamo.

Spero che questo aiuti!Non è il modo migliore, ma funziona.

In primo luogo, hai anche oggetti di prodotto validi nel ciclo?I.e. $childProduct->getId() che restituisce un ID o null?Se è così, qualcosa è rotto quando hai aggiornato.Si prega di notare che $this->getProductStockQty() e $childProduct->getName() sono non lo stesso metodo.Quindi, non devono avere necessariamente lavorare reciprocamente insieme o fallire insieme.

Secondo, è necessario esaminare il metodo getChildProducts() del rispettivo blocco.Da lì, puoi rintracciare come la collezione è messa insieme.Potrebbe essere perché la collezione (per qualsiasi motivo dopo aver aggiornato) non include il campo name nel suo filtro addAttributeToFilter().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top