Voici comment je reçois les articles du panier:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Je voudrais faire quelque chose comme ça:
$items->sortBy('updated_at','desc');
Quelle est la bonne façon magento de le faire?
Je suis tenté de faire quelque chose comme ça:
$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
}
Cependant, j'aurais besoin de créer un tas d'objets dateTime afin de comparer facilement ces valeurs et cela semble être une opération fastidieuse sur le plan informatique.
Réponses:
Il n'y a pas de fonction pour trier les
à cause de
getAllItems
venirarray
de l'objet et selon monconcept you cannot sort this by field.
Dans ce cas, vous pouvez utiliser
getItemsCollection().
puis utiliser la fonction seOrder trier par n'importe quel champÉditer:
Réécrire la classe Mage_Sales_Model_Quote
Il sera préférable de réécrire la classe
Mage_Sales_Model_Quote
. Dans cet appel, magento est lacalled getAllItems()
fonction etetItemsCollection() function
la réponse principale pour obtenir tous les éléments.Réécrire la classe:
Utilisez la fonction setOrder () pour le tri:
La fonction setOrder () trie la collection d'éléments par champs
la source
Solution:
Réécrivez votre méthode
Mage_Sales_Model_Quote::getAllVisibleItems
avec:Écrit tôt:
Ce n'est probablement pas une très bonne solution dans cette situation, mais gardez cela à l'esprit. (Magento a de nombreux endroits où il peut être utile)
Dans la méthode getData (), mettez n'importe quel champ que vous souhaitez trier. Dans votre cas, ça peut l'être
updated_at
. En cas d'insertionupdated_at
mieux insérez son horodatage.la source