É assim que estou recebendo os itens do carrinho:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Eu gostaria de fazer algo assim:
$items->sortBy('updated_at','desc');
Qual é a maneira apropriada de fazer isso?
Estou tentado a fazer algo assim:
$productArray=array();
foreach($items as $item){
$product=$item->getProduct();
array_push($productArray,$product);
}
$productArray = $this->sortArray($productArray);
protected sortArray($productArray){
...sort by updated date;
return $sortedArray
}
No entanto, eu precisaria criar um monte de objetos dateTime para comparar facilmente esses valores e isso parece ser um pouco de uma operação computacionalmente complicada.
Respostas:
Não há função para classificar por
por causa da
getAllItems
vinda dearray
de objeto e de acordo com minhaconcept you cannot sort this by field.
Nesse caso, você pode usar
getItemsCollection().
e usar a função seOrder classificar por qualquer campoEditar:
Reescrever a classe Mage_Sales_Model_Quote
Vai idéia melhor para reescrever classe
Mage_Sales_Model_Quote
.Neste magento chamada écalled getAllItems()
função e getItemsCollection() function
principal sensível para obter todos os itens.Reescrever a classe:
Use a função setOrder () para Classificar:
A função setOrder () classifica a coleção de itens por campos
fonte
Solução:
Reescreva seu método
Mage_Sales_Model_Quote::getAllVisibleItems
com ele:Escrito cedo:
Provavelmente não é uma solução muito boa nessa situação, mas lembre-se disso. (Magento tem muitos lugares onde pode ser útil)
Dentro do método getData (), coloque qualquer campo que você queira classificar. No seu caso, pode ser
updated_at
. No caso de inserirupdated_at
melhor, insira seu carimbo de data / hora.fonte